
/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */

__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1)

{
  undefined8 *puVar1;
  __locale_struct *this_00;
  __locale_data *p_Var2;
  bool bVar3;
  
  puVar1 = (undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo);
  if (puVar1 == (undefined8 *)0x0) {
    if (param_1 == (id *)PTR_id_004b9c90) {
      p_Var2 = (__locale_data *)operator_new(0x90);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      p_Var2[0x20] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined8 *)(p_Var2 + 0x28) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined2 *)(p_Var2 + 0x48) = 0;
      p_Var2[0x88] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;
                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */
      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;
                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */
      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_004b9a38) {
      this_00 = (__locale_struct *)operator_new(0x20);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;
                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */
      p_Var2 = (__locale_data *)_S_get_c_locale();
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;
    }
    else if (param_1 == (id *)PTR_id_004b9df8) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;
    }
    else if (param_1 == (id *)PTR_id_004b9ce0) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;
    }
    else if (param_1 == (id *)PTR_id_004b9bc0) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;
    }
    else if (param_1 == (id *)PTR_id_004b9d78) {
      p_Var2 = (__locale_data *)operator_new(0x70);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined2 *)(p_Var2 + 0x20) = 0;
      p_Var2[0x22] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined8 *)(p_Var2 + 0x28) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined8 *)(p_Var2 + 0x48) = 0;
      *(undefined8 *)(p_Var2 + 0x50) = 0;
      *(undefined8 *)(p_Var2 + 0x58) = 0;
      *(undefined4 *)(p_Var2 + 0x60) = 0;
      p_Var2[0x6f] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;
                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */
      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;
                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */
      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_004b9e18) {
      p_Var2 = (__locale_data *)operator_new(0x70);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      p_Var2[0x22] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined2 *)(p_Var2 + 0x20) = 0;
      *(undefined8 *)(p_Var2 + 0x28) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined8 *)(p_Var2 + 0x48) = 0;
      *(undefined8 *)(p_Var2 + 0x50) = 0;
      *(undefined8 *)(p_Var2 + 0x58) = 0;
      *(undefined4 *)(p_Var2 + 0x60) = 0;
      p_Var2[0x6f] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;
                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */
      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;
                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */
      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_004b9df0) {
      this_00 = (__locale_struct *)operator_new(0x28);
                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */
      messages<char>::messages((messages<char> *)this_00,0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[4] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;
    }
    else if (param_1 == (id *)PTR_id_004b9de8) {
      p_Var2 = (__locale_data *)operator_new(0x150);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      p_Var2[0x20] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined8 *)(p_Var2 + 0x28) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined8 *)(p_Var2 + 0x48) = 0;
      p_Var2[0x148] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;
                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */
      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)
      ;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;
                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */
      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_004b9d28) {
      this_00 = (__locale_struct *)operator_new(0x20);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;
                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */
      p_Var2 = (__locale_data *)_S_get_c_locale();
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;
    }
    else if (param_1 == (id *)PTR_id_004b9c68) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;
    }
    else if (param_1 == (id *)PTR_id_004b9d70) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;
    }
    else if (param_1 == (id *)PTR_id_004b9f78) {
      this_00 = (__locale_struct *)operator_new(0x18);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (__locale_data *)this;
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;
    }
    else if (param_1 == (id *)PTR_id_004b9db8) {
      p_Var2 = (__locale_data *)operator_new(0xa0);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      p_Var2[0x20] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined8 *)(p_Var2 + 0x24) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined8 *)(p_Var2 + 0x48) = 0;
      *(undefined8 *)(p_Var2 + 0x50) = 0;
      *(undefined8 *)(p_Var2 + 0x58) = 0;
      *(undefined8 *)(p_Var2 + 0x60) = 0;
      *(undefined4 *)(p_Var2 + 0x68) = 0;
      p_Var2[0x98] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;
                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */
      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;
                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */
      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_004b9d38) {
      p_Var2 = (__locale_data *)operator_new(0xa0);
      *(undefined4 *)(p_Var2 + 8) = 0;
      *(undefined8 *)(p_Var2 + 0x10) = 0;
      p_Var2[0x20] = (__locale_data)0x0;
      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;
      *(undefined8 *)(p_Var2 + 0x18) = 0;
      *(undefined8 *)(p_Var2 + 0x24) = 0;
      *(undefined8 *)(p_Var2 + 0x30) = 0;
      *(undefined8 *)(p_Var2 + 0x38) = 0;
      *(undefined8 *)(p_Var2 + 0x40) = 0;
      *(undefined8 *)(p_Var2 + 0x48) = 0;
      *(undefined8 *)(p_Var2 + 0x50) = 0;
      *(undefined8 *)(p_Var2 + 0x58) = 0;
      *(undefined8 *)(p_Var2 + 0x60) = 0;
      *(undefined4 *)(p_Var2 + 0x68) = 0;
      p_Var2[0x98] = (__locale_data)0x0;
      this_00 = (__locale_struct *)operator_new(0x28);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;
                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */
      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[3] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[4] = p_Var2;
      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;
                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */
      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);
    }
    else {
      if (param_1 != (id *)PTR_id_004b9f48) {
                    /* WARNING: Subroutine does not return */
        __throw_logic_error("cannot create shim for unknown locale::facet");
      }
      this_00 = (__locale_struct *)operator_new(0x28);
                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */
      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);
      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      this_00->__locales[4] = (__locale_data *)this;
      if (bVar3) {
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 8) = *(int *)(this + 8) + 1;
        UNLOCK();
      }
      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;
    }
  }
  else {
    this_00 = (__locale_struct *)*puVar1;
  }
  return this_00;
}



undefined8 * FUN_00370e80(long param_1,undefined *param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  bool bVar4;
  
  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);
  if (puVar1 == (undefined8 *)0x0) {
    if (param_2 == PTR_DAT_004b9c90) {
      puVar3 = (undefined8 *)FUN_00337270(0x90);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b5290;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      *(undefined2 *)(puVar3 + 9) = 0;
      *(undefined1 *)(puVar3 + 0x11) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8e78;
                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */
      FUN_0037b2b0(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6398;
                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */
      FUN_00373a20(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9a38) {
      puVar1 = (undefined8 *)FUN_00337270(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_004b8e08;
                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */
      uVar2 = FUN_0033ad40();
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[2] = uVar2;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b63e0;
    }
    else if (param_2 == PTR_DAT_004b9df8) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b9140;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6638;
    }
    else if (param_2 == PTR_DAT_004b9ce0) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b90e0;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6ed0;
    }
    else if (param_2 == PTR_DAT_004b9bc0) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b9110;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f00;
    }
    else if (param_2 == PTR_DAT_004b9d78) {
      puVar3 = (undefined8 *)FUN_00337270(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_004b5270;
      puVar3[2] = 0;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      *(undefined4 *)(puVar3 + 0xc) = 0;
      *(undefined1 *)((long)puVar3 + 0x6f) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8f08;
                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */
      FUN_0037b810(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6418;
                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */
      FUN_003740f0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9e18) {
      puVar3 = (undefined8 *)FUN_00337270(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_004b5250;
      puVar3[3] = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      *(undefined4 *)(puVar3 + 0xc) = 0;
      *(undefined1 *)((long)puVar3 + 0x6f) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8f70;
                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */
      FUN_0037bd30(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6480;
                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */
      FUN_00374410(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9df0) {
      puVar1 = (undefined8 *)FUN_00337270(0x28);
                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */
      FUN_003ad270(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[4] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f30;
    }
    else if (param_2 == PTR_DAT_004b9de8) {
      puVar3 = (undefined8 *)FUN_00337270(0x150);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b72f0;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      *(undefined1 *)(puVar3 + 0x29) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8888;
                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */
      FUN_0037b580(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b64e8;
                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */
      FUN_00373c80(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9d28) {
      puVar1 = (undefined8 *)FUN_00337270(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_004b8818;
                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */
      uVar2 = FUN_0033ad40();
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[2] = uVar2;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6530;
    }
    else if (param_2 == PTR_DAT_004b9c68) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8b50;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6690;
    }
    else if (param_2 == PTR_DAT_004b9d70) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8af0;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f68;
    }
    else if (param_2 == PTR_DAT_004b9f78) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8b20;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f98;
    }
    else if (param_2 == PTR_DAT_004b9db8) {
      puVar3 = (undefined8 *)FUN_00337270(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b7340;
      puVar3[3] = 0;
      *(undefined8 *)((long)puVar3 + 0x24) = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      puVar3[0xc] = 0;
      *(undefined4 *)(puVar3 + 0xd) = 0;
      *(undefined1 *)(puVar3 + 0x13) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8918;
                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */
      FUN_0037c450(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6568;
                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */
      FUN_00374730(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9d38) {
      puVar3 = (undefined8 *)FUN_00337270(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b7360;
      puVar3[3] = 0;
      *(undefined8 *)((long)puVar3 + 0x24) = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      puVar3[0xc] = 0;
      *(undefined4 *)(puVar3 + 0xd) = 0;
      *(undefined1 *)(puVar3 + 0x13) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8980;
                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */
      FUN_0037ca00(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b65d0;
                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */
      FUN_00374ad0(param_1,puVar3);
    }
    else {
      if (param_2 != PTR_DAT_004b9f48) {
                    /* WARNING: Subroutine does not return */
        FUN_003772b0("cannot create shim for unknown locale::facet");
      }
      puVar1 = (undefined8 *)FUN_00337270(0x28);
                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */
      FUN_0039e0f0(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[4] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6fc8;
    }
  }
  else {
    puVar1 = (undefined8 *)*puVar1;
  }
  return puVar1;
}


PUSH R12
LEA RDX,[0x4b6308]
MOV RCX,-0x2
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
LEA RSI,[0x4b4638]
CALL 0x00379590
TEST RAX,RAX
JZ 0x00370eb8
MOV RBX,qword ptr [RAX]
MOV RAX,RBX
POP RBX
POP RBP
POP R12
RET
CMP RBX,qword ptr [0x004b9c90]
JZ 0x00370fc8
CMP RBX,qword ptr [0x004b9a38]
JZ 0x00371150
CMP RBX,qword ptr [0x004b9df8]
JZ 0x003710a0
CMP RBX,qword ptr [0x004b9ce0]
JZ 0x003711a8
CMP RBX,qword ptr [0x004b9bc0]
JZ 0x003711f0
CMP RBX,qword ptr [0x004b9d78]
JZ 0x00371250
CMP RBX,qword ptr [0x004b9e18]
JZ 0x00371360
CMP RBX,qword ptr [0x004b9df0]
JZ 0x00371470
CMP RBX,qword ptr [0x004b9de8]
JZ 0x003714c0
CMP RBX,qword ptr [0x004b9d28]
JZ 0x003710f6
CMP RBX,qword ptr [0x004b9c68]
JZ 0x003715a8
CMP RBX,qword ptr [0x004b9d70]
JZ 0x003715f9
CMP RBX,qword ptr [0x004b9f78]
JZ 0x0037164a
CMP RBX,qword ptr [0x004b9db8]
JZ 0x0037169b
CMP RBX,qword ptr [0x004b9d38]
JZ 0x003717a9
CMP RBX,qword ptr [0x004b9f48]
JNZ 0x003718c2
MOV EDI,0x28
CALL 0x00337270
XOR ESI,ESI
MOV RDI,RAX
MOV RBX,RAX
CALL 0x0039e0f0
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x20],RBP
JZ 0x0037159f
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6fc8]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
MOV EDI,0x90
CALL 0x00337270
XOR ECX,ECX
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b5280]
MOV qword ptr [R12 + 0x10],0x0
ADD RAX,0x10
MOV byte ptr [R12 + 0x20],0x0
MOV qword ptr [R12],RAX
MOV qword ptr [R12 + 0x18],0x0
MOV qword ptr [R12 + 0x28],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV word ptr [R12 + 0x48],CX
MOV byte ptr [R12 + 0x88],0x0
CALL 0x00337270
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8e68]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037b2b0
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x003710f0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6398]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00373a20
JMP 0x00370eac
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b9130]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x00371350
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6638]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x0037107b
MOV EDI,0x20
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8808]
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0033ad40
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00371797
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6530]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
MOV EDI,0x20
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8df8]
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0033ad40
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00371240
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b63e0]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b90d0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x00371460
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6ed0]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b9100]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003714b0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6f00]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371192
MOV EDI,0x70
CALL 0x00337270
XOR EDX,EDX
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b5260]
MOV word ptr [R12 + 0x20],DX
ADD RAX,0x10
MOV byte ptr [R12 + 0x22],0x0
MOV qword ptr [R12],RAX
MOV qword ptr [R12 + 0x10],0x0
MOV qword ptr [R12 + 0x18],0x0
MOV qword ptr [R12 + 0x28],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV qword ptr [R12 + 0x48],0x0
MOV qword ptr [R12 + 0x50],0x0
MOV qword ptr [R12 + 0x58],0x0
MOV dword ptr [R12 + 0x60],0x0
MOV byte ptr [R12 + 0x6f],0x0
CALL 0x00337270
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8ef8]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037b810
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00371596
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6418]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x003740f0
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003710d9
MOV EDI,0x70
CALL 0x00337270
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b5240]
MOV qword ptr [R12 + 0x10],0x0
ADD RAX,0x10
MOV byte ptr [R12 + 0x22],0x0
MOV qword ptr [R12],RAX
XOR EAX,EAX
MOV qword ptr [R12 + 0x18],0x0
MOV word ptr [R12 + 0x20],AX
MOV qword ptr [R12 + 0x28],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV qword ptr [R12 + 0x48],0x0
MOV qword ptr [R12 + 0x50],0x0
MOV qword ptr [R12 + 0x58],0x0
MOV dword ptr [R12 + 0x60],0x0
MOV byte ptr [R12 + 0x6f],0x0
CALL 0x00337270
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8f60]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037bd30
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x003715f0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6480]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00374410
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003711e1
MOV EDI,0x28
CALL 0x00337270
XOR ESI,ESI
MOV RDI,RAX
MOV RBX,RAX
CALL 0x003ad270
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x20],RBP
JZ 0x00371641
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6f30]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371229
MOV EDI,0x150
CALL 0x00337270
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b72e0]
MOV qword ptr [R12 + 0x10],0x0
ADD RAX,0x10
MOV byte ptr [R12 + 0x20],0x0
MOV qword ptr [R12],RAX
MOV qword ptr [R12 + 0x18],0x0
MOV qword ptr [R12 + 0x28],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV qword ptr [R12 + 0x48],0x0
MOV byte ptr [R12 + 0x148],0x0
CALL 0x00337270
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8878]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037b580
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00371692
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b64e8]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00373c80
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x0037132a
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00370fb6
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8b40]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003717a0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6690]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x0037143a
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8ae0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003718a1
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6f68]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x0037149e
MOV EDI,0x18
CALL 0x00337270
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8b10]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003718aa
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4a6f98]
MOV qword ptr [RBX],RAX
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371578
MOV EDI,0xa0
CALL 0x00337270
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b7330]
MOV qword ptr [R12 + 0x10],0x0
ADD RAX,0x10
MOV byte ptr [R12 + 0x20],0x0
MOV qword ptr [R12],RAX
MOV qword ptr [R12 + 0x18],0x0
MOV qword ptr [R12 + 0x24],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV qword ptr [R12 + 0x48],0x0
MOV qword ptr [R12 + 0x50],0x0
MOV qword ptr [R12 + 0x58],0x0
MOV qword ptr [R12 + 0x60],0x0
MOV dword ptr [R12 + 0x68],0x0
MOV byte ptr [R12 + 0x98],0x0
CALL 0x00337270
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8908]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037c450
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x003718b3
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b6568]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00374730
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371138
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003715e1
MOV EDI,0xa0
CALL 0x00337270
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b7350]
MOV qword ptr [R12 + 0x10],0x0
ADD RAX,0x10
MOV byte ptr [R12 + 0x20],0x0
MOV qword ptr [R12],RAX
MOV qword ptr [R12 + 0x18],0x0
MOV qword ptr [R12 + 0x24],0x0
MOV qword ptr [R12 + 0x30],0x0
MOV qword ptr [R12 + 0x38],0x0
MOV qword ptr [R12 + 0x40],0x0
MOV qword ptr [R12 + 0x48],0x0
MOV qword ptr [R12 + 0x50],0x0
MOV qword ptr [R12 + 0x58],0x0
MOV qword ptr [R12 + 0x60],0x0
MOV dword ptr [R12 + 0x68],0x0
MOV byte ptr [R12 + 0x98],0x0
CALL 0x00337270
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4b8970]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0037ca00
CMP qword ptr [0x004b9ee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x003718bc
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x4b65d0]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00374ad0
JMP 0x00370eac
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371632
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371683
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371779
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00371883
LEA RDI,[0x400550]
CALL 0x003772b0
(translation_unit "undefined8 * FUN_00370e80(long param_1,undefined *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00370e80(long param_1,undefined *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00370e80(long param_1,undefined *param_2)" * (function_declarator "FUN_00370e80(long param_1,undefined *param_2)" identifier (parameter_list "(long param_1,undefined *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);" (assignment_expression "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" identifier = (cast_expression "(undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" identifier (argument_list "(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" ( identifier , (pointer_expression "&PTR_PTR_FUN_004b4638" & identifier) , (pointer_expression "&PTR_PTR_FUN_004b6308" & identifier) ))))) ;) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" if (parenthesized_expression "(puVar1 == (undefined8 *)0x0)" ( (binary_expression "puVar1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9c90)" ( (binary_expression "param_2 == PTR_DAT_004b9c90" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      FUN_00373a20(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x90)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5290;" (assignment_expression "*puVar3 = &PTR_FUN_004b5290" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5290" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 9)" * (cast_expression "(undefined2 *)(puVar3 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 9)" ( (binary_expression "puVar3 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x11)" * (cast_expression "(undefined1 *)(puVar3 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x11)" ( (binary_expression "puVar3 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8e78;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e78" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8e78" & identifier)) ;) comment (expression_statement "FUN_0037b2b0(puVar1,0);" (call_expression "FUN_0037b2b0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6398;" (assignment_expression "*puVar1 = &PTR_FUN_004b6398" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6398" & identifier)) ;) comment (expression_statement "FUN_00373a20(param_1,puVar3);" (call_expression "FUN_00373a20(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9a38)" ( (binary_expression "param_2 == PTR_DAT_004b9a38" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8e08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e08" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8e08" & identifier)) ;) comment (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" identifier = (call_expression "FUN_0033ad40()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b63e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b63e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b63e0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9df8)" ( (binary_expression "param_2 == PTR_DAT_004b9df8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b9140;" (assignment_expression "*puVar1 = &PTR_FUN_004b9140" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b9140" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6638;" (assignment_expression "*puVar1 = &PTR_FUN_004b6638" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6638" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9ce0)" ( (binary_expression "param_2 == PTR_DAT_004b9ce0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b90e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b90e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b90e0" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6ed0;" (assignment_expression "*puVar1 = &PTR_FUN_004a6ed0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6ed0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9bc0)" ( (binary_expression "param_2 == PTR_DAT_004b9bc0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b9110;" (assignment_expression "*puVar1 = &PTR_FUN_004b9110" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b9110" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f00;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f00" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f00" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d78)" ( (binary_expression "param_2 == PTR_DAT_004b9d78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      FUN_003740f0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" * (cast_expression "(undefined2 *)(puVar3 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x22)" ( (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5270;" (assignment_expression "*puVar3 = &PTR_FUN_004b5270" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5270" & identifier)) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" * (cast_expression "(undefined4 *)(puVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xc)" ( (binary_expression "puVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x6f)" ( (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8f08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f08" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8f08" & identifier)) ;) comment (expression_statement "FUN_0037b810(puVar1,0,0);" (call_expression "FUN_0037b810(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6418;" (assignment_expression "*puVar1 = &PTR_FUN_004b6418" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6418" & identifier)) ;) comment (expression_statement "FUN_003740f0(param_1,puVar3);" (call_expression "FUN_003740f0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9e18)" ( (binary_expression "param_2 == PTR_DAT_004b9e18" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      FUN_00374410(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x22)" ( (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5250;" (assignment_expression "*puVar3 = &PTR_FUN_004b5250" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5250" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" * (cast_expression "(undefined2 *)(puVar3 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" * (cast_expression "(undefined4 *)(puVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xc)" ( (binary_expression "puVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x6f)" ( (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8f70;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f70" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8f70" & identifier)) ;) comment (expression_statement "FUN_0037bd30(puVar1,0,0);" (call_expression "FUN_0037bd30(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6480;" (assignment_expression "*puVar1 = &PTR_FUN_004b6480" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6480" & identifier)) ;) comment (expression_statement "FUN_00374410(param_1,puVar3);" (call_expression "FUN_00374410(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9df0)" ( (binary_expression "param_2 == PTR_DAT_004b9df0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "FUN_003ad270(puVar1,0);" (call_expression "FUN_003ad270(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f30;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f30" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f30" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9de8)" ( (binary_expression "param_2 == PTR_DAT_004b9de8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      FUN_00373c80(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x150)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x150)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x150)" identifier (argument_list "(0x150)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b72f0;" (assignment_expression "*puVar3 = &PTR_FUN_004b72f0" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b72f0" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x29) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x29) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x29)" * (cast_expression "(undefined1 *)(puVar3 + 0x29)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x29)" ( (binary_expression "puVar3 + 0x29" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8888;" (assignment_expression "*puVar1 = &PTR_FUN_004b8888" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8888" & identifier)) ;) comment (expression_statement "FUN_0037b580(puVar1,0);" (call_expression "FUN_0037b580(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b64e8;" (assignment_expression "*puVar1 = &PTR_FUN_004b64e8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b64e8" & identifier)) ;) comment (expression_statement "FUN_00373c80(param_1,puVar3);" (call_expression "FUN_00373c80(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d28)" ( (binary_expression "param_2 == PTR_DAT_004b9d28" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8818;" (assignment_expression "*puVar1 = &PTR_FUN_004b8818" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8818" & identifier)) ;) comment (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" identifier = (call_expression "FUN_0033ad40()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6530;" (assignment_expression "*puVar1 = &PTR_FUN_004b6530" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6530" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9c68)" ( (binary_expression "param_2 == PTR_DAT_004b9c68" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8b50;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b50" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8b50" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6690;" (assignment_expression "*puVar1 = &PTR_FUN_004b6690" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6690" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d70)" ( (binary_expression "param_2 == PTR_DAT_004b9d70" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8af0;" (assignment_expression "*puVar1 = &PTR_FUN_004b8af0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8af0" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f68;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f68" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f68" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9f78)" ( (binary_expression "param_2 == PTR_DAT_004b9f78" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8b20;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8b20" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f98;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f98" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f98" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9db8)" ( (binary_expression "param_2 == PTR_DAT_004b9db8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      FUN_00374730(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b7340;" (assignment_expression "*puVar3 = &PTR_FUN_004b7340" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b7340" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x24)" ( (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" * (cast_expression "(undefined4 *)(puVar3 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xd)" ( (binary_expression "puVar3 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" * (cast_expression "(undefined1 *)(puVar3 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x13)" ( (binary_expression "puVar3 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8918;" (assignment_expression "*puVar1 = &PTR_FUN_004b8918" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8918" & identifier)) ;) comment (expression_statement "FUN_0037c450(puVar1,0,0);" (call_expression "FUN_0037c450(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6568;" (assignment_expression "*puVar1 = &PTR_FUN_004b6568" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6568" & identifier)) ;) comment (expression_statement "FUN_00374730(param_1,puVar3);" (call_expression "FUN_00374730(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d38)" ( (binary_expression "param_2 == PTR_DAT_004b9d38" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      FUN_00374ad0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b7360;" (assignment_expression "*puVar3 = &PTR_FUN_004b7360" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b7360" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x24)" ( (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" * (cast_expression "(undefined4 *)(puVar3 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xd)" ( (binary_expression "puVar3 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" * (cast_expression "(undefined1 *)(puVar3 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x13)" ( (binary_expression "puVar3 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8980;" (assignment_expression "*puVar1 = &PTR_FUN_004b8980" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8980" & identifier)) ;) comment (expression_statement "FUN_0037ca00(puVar1,0,0);" (call_expression "FUN_0037ca00(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b65d0;" (assignment_expression "*puVar1 = &PTR_FUN_004b65d0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b65d0" & identifier)) ;) comment (expression_statement "FUN_00374ad0(param_1,puVar3);" (call_expression "FUN_00374ad0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" { (if_statement "if (param_2 != PTR_DAT_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_004b9f48)" ( (binary_expression "param_2 != PTR_DAT_004b9f48" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" { comment (expression_statement "FUN_003772b0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003772b0("cannot create shim for unknown locale::facet")" identifier (argument_list "("cannot create shim for unknown locale::facet")" ( (string_literal ""cannot create shim for unknown locale::facet"" " string_content ") ))) ;) })) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "FUN_0039e0f0(puVar1,0);" (call_expression "FUN_0039e0f0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6fc8;" (assignment_expression "*puVar1 = &PTR_FUN_004a6fc8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6fc8" & identifier)) ;) }))))))))))))))))))))))))))))))) }) (else_clause "else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" else (compound_statement "{\n    puVar1 = (undefined8 *)*puVar1;\n  }" { (expression_statement "puVar1 = (undefined8 *)*puVar1;" (assignment_expression "puVar1 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }))) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit "/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */\n\n__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1)\n\n{\n  undefined8 *puVar1;\n  __locale_struct *this_00;\n  __locale_data *p_Var2;\n  bool bVar3;\n  \n  puVar1 = (undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_1 == (id *)PTR_id_004b9c90) {\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }\n  }\n  else {\n    this_00 = (__locale_struct *)*puVar1;\n  }\n  return this_00;\n}\n\n" comment (ERROR "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1)" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this" (binary_expression "__locale_struct * __thiscall" identifier * identifier) (ERROR "std::locale::facet::_M_sso_shim(facet" identifier : : identifier : : identifier : : identifier ( identifier) * identifier) (ERROR ",id" , identifier) * identifier) )) (compound_statement "{\n  undefined8 *puVar1;\n  __locale_struct *this_00;\n  __locale_data *p_Var2;\n  bool bVar3;\n  \n  puVar1 = (undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_1 == (id *)PTR_id_004b9c90) {\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }\n  }\n  else {\n    this_00 = (__locale_struct *)*puVar1;\n  }\n  return this_00;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "__locale_struct *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "__locale_data *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo);" (assignment_expression "puVar1 = (undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo)" identifier = (cast_expression "(undefined8 *)__dynamic_cast(this,&typeinfo,&__shim::typeinfo)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__dynamic_cast(this,&typeinfo,&__shim::typeinfo)" identifier (argument_list "(this,&typeinfo,&__shim::typeinfo)" ( identifier , (pointer_expression "&typeinfo" & identifier) , (ERROR "&__shim::" (pointer_expression "&__shim" & identifier) : :) identifier ))))) ;) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_1 == (id *)PTR_id_004b9c90) {\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }\n  }\n  else {\n    this_00 = (__locale_struct *)*puVar1;\n  }" if (parenthesized_expression "(puVar1 == (undefined8 *)0x0)" ( (binary_expression "puVar1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_1 == (id *)PTR_id_004b9c90) {\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }\n  }" { (if_statement "if (param_1 == (id *)PTR_id_004b9c90) {\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9c90)" ( (binary_expression "param_1 == (id *)PTR_id_004b9c90" identifier == (cast_expression "(id *)PTR_id_004b9c90" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0x90);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined2 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x88] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;\n                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;\n                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0x90);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0x90)" identifier = (cast_expression "(__locale_data *)operator_new(0x90)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x20] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x20] = (__locale_data)0x0" (subscript_expression "p_Var2[0x20]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____numpunct_cache_004b5290" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____numpunct_cache_004b5290" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x28)" * (cast_expression "(undefined8 *)(p_Var2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x28)" ( (binary_expression "p_Var2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined2 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined2 *)(p_Var2 + 0x48)" * (cast_expression "(undefined2 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x88] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x88] = (__locale_data)0x0" (subscript_expression "p_Var2[0x88]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8e78" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_004b8e78" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_004b8e78" & identifier))) ;) comment (expression_statement "numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);" (binary_expression "numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0)" (binary_expression "numpunct<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0)" identifier (argument_list "((numpunct<char> *)this_00,(__locale_struct *)0x0)" ( (parenthesized_expression "(numpunct<char> *)this_00,(__locale_struct *)0x0)" ( (comma_expression "numpunct<char> *)this_00,(__locale_struct *)0x0" (binary_expression "numpunct<char> *)this_00" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , (cast_expression "(__locale_struct *)0x0" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) )))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b6398" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_004b6398" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_004b6398" & identifier))) ;) comment (labeled_statement "__facet_shims::__numpunct_fill_cache<char>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__numpunct_fill_cache<char>(this,p_Var2);" (binary_expression "__numpunct_fill_cache<char>(this,p_Var2)" (binary_expression "__numpunct_fill_cache<char" identifier < identifier) > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) ))) ;)) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9a38) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9a38)" ( (binary_expression "param_1 == (id *)PTR_id_004b9a38" identifier == (cast_expression "(id *)PTR_id_004b9a38" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;\n                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x20);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x20)" identifier = (cast_expression "(__locale_struct *)operator_new(0x20)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8e08" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_004b8e08" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_004b8e08" & identifier))) ;) comment (expression_statement "p_Var2 = (__locale_data *)_S_get_c_locale();" (assignment_expression "p_Var2 = (__locale_data *)_S_get_c_locale()" identifier = (cast_expression "(__locale_data *)_S_get_c_locale()" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_S_get_c_locale()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b63e0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_004b63e0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_004b63e0" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9df8) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }\n    else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9df8)" ( (binary_expression "param_1 == (id *)PTR_id_004b9df8" identifier == (cast_expression "(id *)PTR_id_004b9df8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b9140" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_004b9140" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_004b9140" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6638" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_004b6638" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_004b6638" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9ce0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }\n    else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9ce0)" ( (binary_expression "param_1 == (id *)PTR_id_004b9ce0" identifier == (cast_expression "(id *)PTR_id_004b9ce0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b90e0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_004b90e0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_004b90e0" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6ed0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_004a6ed0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_004a6ed0" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9bc0) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9bc0)" ( (binary_expression "param_1 == (id *)PTR_id_004b9bc0" identifier == (cast_expression "(id *)PTR_id_004b9bc0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b9110" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_004b9110" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_004b9110" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f00" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_004a6f00" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_004a6f00" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9d78) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9d78)" ( (binary_expression "param_1 == (id *)PTR_id_004b9d78" identifier == (cast_expression "(id *)PTR_id_004b9d78" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;\n                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;\n                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0x70);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0x70)" identifier = (cast_expression "(__locale_data *)operator_new(0x70)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(p_Var2 + 0x20) = 0;" (assignment_expression "*(undefined2 *)(p_Var2 + 0x20) = 0" (pointer_expression "*(undefined2 *)(p_Var2 + 0x20)" * (cast_expression "(undefined2 *)(p_Var2 + 0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x20)" ( (binary_expression "p_Var2 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x22] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x22] = (__locale_data)0x0" (subscript_expression "p_Var2[0x22]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5270" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004b5270" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x28)" * (cast_expression "(undefined8 *)(p_Var2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x28)" ( (binary_expression "p_Var2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x48)" * (cast_expression "(undefined8 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x50) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x50) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x50)" * (cast_expression "(undefined8 *)(p_Var2 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x50)" ( (binary_expression "p_Var2 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x58) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x58) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x58)" * (cast_expression "(undefined8 *)(p_Var2 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x58)" ( (binary_expression "p_Var2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var2 + 0x60) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 0x60) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 0x60)" * (cast_expression "(undefined4 *)(p_Var2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x60)" ( (binary_expression "p_Var2 + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x6f] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x6f] = (__locale_data)0x0" (subscript_expression "p_Var2[0x6f]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f08" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004b8f08" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004b8f08" & identifier))) ;) comment (expression_statement "moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);" (comma_expression "moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(this_00,(char *)0x0)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(this_00,(char *)0x0)" identifier (argument_list "(this_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6418" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_004b6418" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_004b6418" & identifier))) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<char,true>(this,p_Var2);" (comma_expression "__moneypunct_fill_cache<char,true>(this,p_Var2)" (binary_expression "__moneypunct_fill_cache<char" identifier < identifier) , (binary_expression "true>(this,p_Var2)" true > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) )))) ;)) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9e18) {\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9e18)" ( (binary_expression "param_1 == (id *)PTR_id_004b9e18" identifier == (cast_expression "(id *)PTR_id_004b9e18" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0x70);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x22] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined2 *)(p_Var2 + 0x20) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined4 *)(p_Var2 + 0x60) = 0;\n      p_Var2[0x6f] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;\n                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;\n                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0x70);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0x70)" identifier = (cast_expression "(__locale_data *)operator_new(0x70)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x22] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x22] = (__locale_data)0x0" (subscript_expression "p_Var2[0x22]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b5250" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004b5250" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(p_Var2 + 0x20) = 0;" (assignment_expression "*(undefined2 *)(p_Var2 + 0x20) = 0" (pointer_expression "*(undefined2 *)(p_Var2 + 0x20)" * (cast_expression "(undefined2 *)(p_Var2 + 0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x20)" ( (binary_expression "p_Var2 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x28)" * (cast_expression "(undefined8 *)(p_Var2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x28)" ( (binary_expression "p_Var2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x48)" * (cast_expression "(undefined8 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x50) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x50) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x50)" * (cast_expression "(undefined8 *)(p_Var2 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x50)" ( (binary_expression "p_Var2 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x58) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x58) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x58)" * (cast_expression "(undefined8 *)(p_Var2 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x58)" ( (binary_expression "p_Var2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var2 + 0x60) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 0x60) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 0x60)" * (cast_expression "(undefined4 *)(p_Var2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x60)" ( (binary_expression "p_Var2 + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x6f] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x6f] = (__locale_data)0x0" (subscript_expression "p_Var2[0x6f]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8f70" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004b8f70" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004b8f70" & identifier))) ;) comment (expression_statement "moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);" (comma_expression "moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(this_00,(char *)0x0)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(this_00,(char *)0x0)" identifier (argument_list "(this_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6480" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_004b6480" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_004b6480" & identifier))) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<char,false>(this,p_Var2);" (comma_expression "__moneypunct_fill_cache<char,false>(this,p_Var2)" (binary_expression "__moneypunct_fill_cache<char" identifier < identifier) , (binary_expression "false>(this,p_Var2)" false > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) )))) ;)) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9df0) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }\n    else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9df0)" ( (binary_expression "param_1 == (id *)PTR_id_004b9df0" identifier == (cast_expression "(id *)PTR_id_004b9df0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "messages<char>::messages((messages<char> *)this_00,0);" (binary_expression "messages<char>::messages((messages<char> *)this_00,0)" (binary_expression "messages<char" identifier < identifier) > (ERROR "::" : :) (call_expression "messages((messages<char> *)this_00,0)" identifier (argument_list "((messages<char> *)this_00,0)" ( (parenthesized_expression "(messages<char> *)this_00,0)" ( (comma_expression "messages<char> *)this_00,0" (binary_expression "messages<char> *)this_00" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , number_literal) )) )))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[4] = (__locale_data *)this;" (assignment_expression "this_00->__locales[4] = (__locale_data *)this" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6f30" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_004a6f30" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_004a6f30" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9de8) {\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9de8)" ( (binary_expression "param_1 == (id *)PTR_id_004b9de8" identifier == (cast_expression "(id *)PTR_id_004b9de8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0x150);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x28) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      p_Var2[0x148] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;\n                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;\n                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0x150);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0x150)" identifier = (cast_expression "(__locale_data *)operator_new(0x150)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x150)" identifier (argument_list "(0x150)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x20] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x20] = (__locale_data)0x0" (subscript_expression "p_Var2[0x20]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____numpunct_cache_004b72f0" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____numpunct_cache_004b72f0" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x28)" * (cast_expression "(undefined8 *)(p_Var2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x28)" ( (binary_expression "p_Var2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x48)" * (cast_expression "(undefined8 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x148] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x148] = (__locale_data)0x0" (subscript_expression "p_Var2[0x148]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_004b8888" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_004b8888" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_004b8888" & identifier))) ;) comment (expression_statement "numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;" (binary_expression "numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)" identifier (argument_list "((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)" ( (parenthesized_expression "(numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)" ( (comma_expression "numpunct<wchar_t> *)this_00,(__locale_struct *)0x0" (binary_expression "numpunct<wchar_t> *)this_00" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , (cast_expression "(__locale_struct *)0x0" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) )))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_004b64e8" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_004b64e8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_004b64e8" & identifier))) ;) comment (labeled_statement "__facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__numpunct_fill_cache<wchar_t>(this,p_Var2);" (binary_expression "__numpunct_fill_cache<wchar_t>(this,p_Var2)" (binary_expression "__numpunct_fill_cache<wchar_t" identifier < identifier) > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) ))) ;)) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9d28) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }\n    else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9d28)" ( (binary_expression "param_1 == (id *)PTR_id_004b9d28" identifier == (cast_expression "(id *)PTR_id_004b9d28" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;\n                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x20);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x20)" identifier = (cast_expression "(__locale_struct *)operator_new(0x20)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_004b8818" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_004b8818" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_004b8818" & identifier))) ;) comment (expression_statement "p_Var2 = (__locale_data *)_S_get_c_locale();" (assignment_expression "p_Var2 = (__locale_data *)_S_get_c_locale()" identifier = (cast_expression "(__locale_data *)_S_get_c_locale()" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_S_get_c_locale()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_004b6530" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_004b6530" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_004b6530" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9c68) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }\n    else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9c68)" ( (binary_expression "param_1 == (id *)PTR_id_004b9c68" identifier == (cast_expression "(id *)PTR_id_004b9c68" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_004b8b50" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_004b8b50" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_004b8b50" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_004b6690" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_004b6690" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_004b6690" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9d70) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }\n    else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9d70)" ( (binary_expression "param_1 == (id *)PTR_id_004b9d70" identifier == (cast_expression "(id *)PTR_id_004b9d70" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_004b8af0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_004b8af0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_004b8af0" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_004a6f68" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_004a6f68" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_004a6f68" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9f78) {\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }\n    else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9f78)" ( (binary_expression "param_1 == (id *)PTR_id_004b9f78" identifier == (cast_expression "(id *)PTR_id_004b9f78" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x18);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = (__locale_data *)this;\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;\n    }" { (expression_statement "this_00 = (__locale_struct *)operator_new(0x18);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = (__locale_data *)this;" (assignment_expression "this_00->__locales[2] = (__locale_data *)this" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_004b8b20" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_004b8b20" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_004b8b20" & identifier))) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_004a6f98" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_004a6f98" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_004a6f98" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9db8) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9db8)" ( (binary_expression "param_1 == (id *)PTR_id_004b9db8" identifier == (cast_expression "(id *)PTR_id_004b9db8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;\n                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;\n                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0xa0);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0xa0)" identifier = (cast_expression "(__locale_data *)operator_new(0xa0)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x20] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x20] = (__locale_data)0x0" (subscript_expression "p_Var2[0x20]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7340" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004b7340" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x24) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x24) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x24)" * (cast_expression "(undefined8 *)(p_Var2 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x24)" ( (binary_expression "p_Var2 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x48)" * (cast_expression "(undefined8 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x50) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x50) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x50)" * (cast_expression "(undefined8 *)(p_Var2 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x50)" ( (binary_expression "p_Var2 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x58) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x58) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x58)" * (cast_expression "(undefined8 *)(p_Var2 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x58)" ( (binary_expression "p_Var2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x60) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x60) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x60)" * (cast_expression "(undefined8 *)(p_Var2 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x60)" ( (binary_expression "p_Var2 + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var2 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 0x68) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 0x68)" * (cast_expression "(undefined4 *)(p_Var2 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x68)" ( (binary_expression "p_Var2 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x98] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x98] = (__locale_data)0x0" (subscript_expression "p_Var2[0x98]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8918" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004b8918" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004b8918" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);" (comma_expression "moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(this_00,(char *)0x0)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(this_00,(char *)0x0)" identifier (argument_list "(this_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b6568" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_004b6568" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_004b6568" & identifier))) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);" (comma_expression "__moneypunct_fill_cache<wchar_t,true>(this,p_Var2)" (binary_expression "__moneypunct_fill_cache<wchar_t" identifier < identifier) , (binary_expression "true>(this,p_Var2)" true > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) )))) ;)) }) (else_clause "else if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_004b9d38) {\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_004b9d38)" ( (binary_expression "param_1 == (id *)PTR_id_004b9d38" identifier == (cast_expression "(id *)PTR_id_004b9d38" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = (__locale_data *)operator_new(0xa0);\n      *(undefined4 *)(p_Var2 + 8) = 0;\n      *(undefined8 *)(p_Var2 + 0x10) = 0;\n      p_Var2[0x20] = (__locale_data)0x0;\n      *(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;\n      *(undefined8 *)(p_Var2 + 0x18) = 0;\n      *(undefined8 *)(p_Var2 + 0x24) = 0;\n      *(undefined8 *)(p_Var2 + 0x30) = 0;\n      *(undefined8 *)(p_Var2 + 0x38) = 0;\n      *(undefined8 *)(p_Var2 + 0x40) = 0;\n      *(undefined8 *)(p_Var2 + 0x48) = 0;\n      *(undefined8 *)(p_Var2 + 0x50) = 0;\n      *(undefined8 *)(p_Var2 + 0x58) = 0;\n      *(undefined8 *)(p_Var2 + 0x60) = 0;\n      *(undefined4 *)(p_Var2 + 0x68) = 0;\n      p_Var2[0x98] = (__locale_data)0x0;\n      this_00 = (__locale_struct *)operator_new(0x28);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[2] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;\n                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[3] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[4] = p_Var2;\n      this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;\n                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }" { (expression_statement "p_Var2 = (__locale_data *)operator_new(0xa0);" (assignment_expression "p_Var2 = (__locale_data *)operator_new(0xa0)" identifier = (cast_expression "(__locale_data *)operator_new(0xa0)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var2 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 8)" * (cast_expression "(undefined4 *)(p_Var2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 8)" ( (binary_expression "p_Var2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x10)" * (cast_expression "(undefined8 *)(p_Var2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x10)" ( (binary_expression "p_Var2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x20] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x20] = (__locale_data)0x0" (subscript_expression "p_Var2[0x20]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_004b7360" (pointer_expression "*(undefined ***)p_Var2" * (cast_expression "(undefined ***)p_Var2" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004b7360" & identifier)) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x18) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x18) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x18)" * (cast_expression "(undefined8 *)(p_Var2 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x18)" ( (binary_expression "p_Var2 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x24) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x24) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x24)" * (cast_expression "(undefined8 *)(p_Var2 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x24)" ( (binary_expression "p_Var2 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x30) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x30) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x30)" * (cast_expression "(undefined8 *)(p_Var2 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x30)" ( (binary_expression "p_Var2 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x38)" * (cast_expression "(undefined8 *)(p_Var2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x38)" ( (binary_expression "p_Var2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x40) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x40)" * (cast_expression "(undefined8 *)(p_Var2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x40)" ( (binary_expression "p_Var2 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x48)" * (cast_expression "(undefined8 *)(p_Var2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x48)" ( (binary_expression "p_Var2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x50) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x50) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x50)" * (cast_expression "(undefined8 *)(p_Var2 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x50)" ( (binary_expression "p_Var2 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x58) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x58) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x58)" * (cast_expression "(undefined8 *)(p_Var2 + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x58)" ( (binary_expression "p_Var2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(p_Var2 + 0x60) = 0;" (assignment_expression "*(undefined8 *)(p_Var2 + 0x60) = 0" (pointer_expression "*(undefined8 *)(p_Var2 + 0x60)" * (cast_expression "(undefined8 *)(p_Var2 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x60)" ( (binary_expression "p_Var2 + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var2 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(p_Var2 + 0x68) = 0" (pointer_expression "*(undefined4 *)(p_Var2 + 0x68)" * (cast_expression "(undefined4 *)(p_Var2 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var2 + 0x68)" ( (binary_expression "p_Var2 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var2[0x98] = (__locale_data)0x0;" (assignment_expression "p_Var2[0x98] = (__locale_data)0x0" (subscript_expression "p_Var2[0x98]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(this_00->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(this_00->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(this_00->__locales + 1)" * (cast_expression "(undefined4 *)(this_00->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00->__locales + 1)" ( (binary_expression "this_00->__locales + 1" (field_expression "this_00->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->__locales[2] = p_Var2;" (assignment_expression "this_00->__locales[2] = p_Var2" (subscript_expression "this_00->__locales[2]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_004b8980" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004b8980" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004b8980" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);" (comma_expression "moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(this_00,(char *)0x0)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(this_00,(char *)0x0)" identifier (argument_list "(this_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[3] = (__locale_data *)this;" (assignment_expression "this_00->__locales[3] = (__locale_data *)this" (subscript_expression "this_00->__locales[3]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[4] = p_Var2;" (assignment_expression "this_00->__locales[4] = p_Var2" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004b65d0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_004b65d0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_004b65d0" & identifier))) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);" (comma_expression "__moneypunct_fill_cache<wchar_t,false>(this,p_Var2)" (binary_expression "__moneypunct_fill_cache<wchar_t" identifier < identifier) , (binary_expression "false>(this,p_Var2)" false > (parenthesized_expression "(this,p_Var2)" ( (comma_expression "this,p_Var2" identifier , identifier) )))) ;)) }) (else_clause "else {\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" else (compound_statement "{\n      if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      this_00->__locales[4] = (__locale_data *)this;\n      if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }\n      this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;\n    }" { (if_statement "if (param_1 != (id *)PTR_id_004b9f48) {\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }" if (parenthesized_expression "(param_1 != (id *)PTR_id_004b9f48)" ( (binary_expression "param_1 != (id *)PTR_id_004b9f48" identifier != (cast_expression "(id *)PTR_id_004b9f48" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __throw_logic_error("cannot create shim for unknown locale::facet");\n      }" { comment (expression_statement "__throw_logic_error("cannot create shim for unknown locale::facet");" (call_expression "__throw_logic_error("cannot create shim for unknown locale::facet")" identifier (argument_list "("cannot create shim for unknown locale::facet")" ( (string_literal ""cannot create shim for unknown locale::facet"" " string_content ") ))) ;) })) (expression_statement "this_00 = (__locale_struct *)operator_new(0x28);" (assignment_expression "this_00 = (__locale_struct *)operator_new(0x28)" identifier = (cast_expression "(__locale_struct *)operator_new(0x28)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);" (binary_expression "messages<wchar_t>::messages((messages<wchar_t> *)this_00,0)" (binary_expression "messages<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "messages((messages<wchar_t> *)this_00,0)" identifier (argument_list "((messages<wchar_t> *)this_00,0)" ( (parenthesized_expression "(messages<wchar_t> *)this_00,0)" ( (comma_expression "messages<wchar_t> *)this_00,0" (binary_expression "messages<wchar_t> *)this_00" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , number_literal) )) )))) ;) (expression_statement "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "this_00->__locales[4] = (__locale_data *)this;" (assignment_expression "this_00->__locales[4] = (__locale_data *)this" (subscript_expression "this_00->__locales[4]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) {\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n      }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 8) = *(int *)(this + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_004a6fc8" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_004a6fc8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_004a6fc8" & identifier))) ;) }))))))))))))))))))))))))))))))) }) (else_clause "else {\n    this_00 = (__locale_struct *)*puVar1;\n  }" else (compound_statement "{\n    this_00 = (__locale_struct *)*puVar1;\n  }" { (expression_statement "this_00 = (__locale_struct *)*puVar1;" (assignment_expression "this_00 = (__locale_struct *)*puVar1" identifier = (cast_expression "(__locale_struct *)*puVar1" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }))) (return_statement "return this_00;" return identifier ;) }))
(translation_unit "undefined8 * FUN_00370e80(long param_1,undefined *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00370e80(long param_1,undefined *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00370e80(long param_1,undefined *param_2)" * (function_declarator "FUN_00370e80(long param_1,undefined *param_2)" identifier (parameter_list "(long param_1,undefined *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (expression_statement "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);" (assignment_expression "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" identifier = (cast_expression "(undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" identifier (argument_list "(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" ( identifier , (pointer_expression "&PTR_PTR_FUN_004b4638" & identifier) , (pointer_expression "&PTR_PTR_FUN_004b6308" & identifier) ))))) ;) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" if (parenthesized_expression "(puVar1 == (undefined8 *)0x0)" ( (binary_expression "puVar1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9c90)" ( (binary_expression "param_2 == PTR_DAT_004b9c90" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x90)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5290;" (assignment_expression "*puVar3 = &PTR_FUN_004b5290" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5290" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 9)" * (cast_expression "(undefined2 *)(puVar3 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 9)" ( (binary_expression "puVar3 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x11)" * (cast_expression "(undefined1 *)(puVar3 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x11)" ( (binary_expression "puVar3 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8e78;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e78" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8e78" & identifier)) ;) (expression_statement "FUN_0037b2b0(puVar1,0);" (call_expression "FUN_0037b2b0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6398;" (assignment_expression "*puVar1 = &PTR_FUN_004b6398" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6398" & identifier)) ;) (expression_statement "FUN_00373a20(param_1,puVar3);" (call_expression "FUN_00373a20(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9a38)" ( (binary_expression "param_2 == PTR_DAT_004b9a38" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8e08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e08" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8e08" & identifier)) ;) (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" identifier = (call_expression "FUN_0033ad40()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b63e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b63e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b63e0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9df8)" ( (binary_expression "param_2 == PTR_DAT_004b9df8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b9140;" (assignment_expression "*puVar1 = &PTR_FUN_004b9140" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b9140" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6638;" (assignment_expression "*puVar1 = &PTR_FUN_004b6638" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6638" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9ce0)" ( (binary_expression "param_2 == PTR_DAT_004b9ce0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b90e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b90e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b90e0" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6ed0;" (assignment_expression "*puVar1 = &PTR_FUN_004a6ed0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6ed0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9bc0)" ( (binary_expression "param_2 == PTR_DAT_004b9bc0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b9110;" (assignment_expression "*puVar1 = &PTR_FUN_004b9110" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b9110" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f00;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f00" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f00" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d78)" ( (binary_expression "param_2 == PTR_DAT_004b9d78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" * (cast_expression "(undefined2 *)(puVar3 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x22)" ( (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5270;" (assignment_expression "*puVar3 = &PTR_FUN_004b5270" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5270" & identifier)) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" * (cast_expression "(undefined4 *)(puVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xc)" ( (binary_expression "puVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x6f)" ( (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8f08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f08" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8f08" & identifier)) ;) (expression_statement "FUN_0037b810(puVar1,0,0);" (call_expression "FUN_0037b810(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6418;" (assignment_expression "*puVar1 = &PTR_FUN_004b6418" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6418" & identifier)) ;) (expression_statement "FUN_003740f0(param_1,puVar3);" (call_expression "FUN_003740f0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9e18)" ( (binary_expression "param_2 == PTR_DAT_004b9e18" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x22)" ( (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b5250;" (assignment_expression "*puVar3 = &PTR_FUN_004b5250" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b5250" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" * (cast_expression "(undefined2 *)(puVar3 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" * (cast_expression "(undefined4 *)(puVar3 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xc)" ( (binary_expression "puVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x6f)" ( (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8f70;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f70" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8f70" & identifier)) ;) (expression_statement "FUN_0037bd30(puVar1,0,0);" (call_expression "FUN_0037bd30(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6480;" (assignment_expression "*puVar1 = &PTR_FUN_004b6480" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6480" & identifier)) ;) (expression_statement "FUN_00374410(param_1,puVar3);" (call_expression "FUN_00374410(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9df0)" ( (binary_expression "param_2 == PTR_DAT_004b9df0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "FUN_003ad270(puVar1,0);" (call_expression "FUN_003ad270(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f30;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f30" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f30" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9de8)" ( (binary_expression "param_2 == PTR_DAT_004b9de8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x150)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x150)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x150)" identifier (argument_list "(0x150)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b72f0;" (assignment_expression "*puVar3 = &PTR_FUN_004b72f0" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b72f0" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x29) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x29) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x29)" * (cast_expression "(undefined1 *)(puVar3 + 0x29)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x29)" ( (binary_expression "puVar3 + 0x29" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8888;" (assignment_expression "*puVar1 = &PTR_FUN_004b8888" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8888" & identifier)) ;) (expression_statement "FUN_0037b580(puVar1,0);" (call_expression "FUN_0037b580(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b64e8;" (assignment_expression "*puVar1 = &PTR_FUN_004b64e8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b64e8" & identifier)) ;) (expression_statement "FUN_00373c80(param_1,puVar3);" (call_expression "FUN_00373c80(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d28)" ( (binary_expression "param_2 == PTR_DAT_004b9d28" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8818;" (assignment_expression "*puVar1 = &PTR_FUN_004b8818" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8818" & identifier)) ;) (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" identifier = (call_expression "FUN_0033ad40()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6530;" (assignment_expression "*puVar1 = &PTR_FUN_004b6530" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6530" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9c68)" ( (binary_expression "param_2 == PTR_DAT_004b9c68" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8b50;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b50" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8b50" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004b6690;" (assignment_expression "*puVar1 = &PTR_FUN_004b6690" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6690" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d70)" ( (binary_expression "param_2 == PTR_DAT_004b9d70" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8af0;" (assignment_expression "*puVar1 = &PTR_FUN_004b8af0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8af0" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f68;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f68" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f68" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9f78)" ( (binary_expression "param_2 == PTR_DAT_004b9f78" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8b20;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8b20" & identifier)) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6f98;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f98" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6f98" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9db8)" ( (binary_expression "param_2 == PTR_DAT_004b9db8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b7340;" (assignment_expression "*puVar3 = &PTR_FUN_004b7340" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b7340" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x24)" ( (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" * (cast_expression "(undefined4 *)(puVar3 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xd)" ( (binary_expression "puVar3 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" * (cast_expression "(undefined1 *)(puVar3 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x13)" ( (binary_expression "puVar3 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8918;" (assignment_expression "*puVar1 = &PTR_FUN_004b8918" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8918" & identifier)) ;) (expression_statement "FUN_0037c450(puVar1,0,0);" (call_expression "FUN_0037c450(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b6568;" (assignment_expression "*puVar1 = &PTR_FUN_004b6568" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b6568" & identifier)) ;) (expression_statement "FUN_00374730(param_1,puVar3);" (call_expression "FUN_00374730(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (if_statement "if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_004b9d38)" ( (binary_expression "param_2 == PTR_DAT_004b9d38" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" * (cast_expression "(undefined1 *)(puVar3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 4)" ( (binary_expression "puVar3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = &PTR_FUN_004b7360;" (assignment_expression "*puVar3 = &PTR_FUN_004b7360" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_004b7360" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x24)" ( (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" * (cast_expression "(undefined4 *)(puVar3 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xd)" ( (binary_expression "puVar3 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" * (cast_expression "(undefined1 *)(puVar3 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x13)" ( (binary_expression "puVar3 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" * (cast_expression "(undefined4 *)(puVar1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b8980;" (assignment_expression "*puVar1 = &PTR_FUN_004b8980" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b8980" & identifier)) ;) (expression_statement "FUN_0037ca00(puVar1,0,0);" (call_expression "FUN_0037ca00(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar1 = &PTR_FUN_004b65d0;" (assignment_expression "*puVar1 = &PTR_FUN_004b65d0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004b65d0" & identifier)) ;) (expression_statement "FUN_00374ad0(param_1,puVar3);" (call_expression "FUN_00374ad0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" { (if_statement "if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_004b9f48)" ( (binary_expression "param_2 != PTR_DAT_004b9f48" identifier != identifier) )) (compound_statement "{\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" { (expression_statement "FUN_003772b0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003772b0("cannot create shim for unknown locale::facet")" identifier (argument_list "("cannot create shim for unknown locale::facet")" ( (string_literal ""cannot create shim for unknown locale::facet"" " string_content ") ))) ;) })) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" identifier = (cast_expression "(undefined8 *)FUN_00337270(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "FUN_0039e0f0(puVar1,0);" (call_expression "FUN_0039e0f0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar1 = &PTR_FUN_004a6fc8;" (assignment_expression "*puVar1 = &PTR_FUN_004a6fc8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004a6fc8" & identifier)) ;) }))))))))))))))))))))))))))))))) }) (else_clause "else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" else (compound_statement "{\n    puVar1 = (undefined8 *)*puVar1;\n  }" { (expression_statement "puVar1 = (undefined8 *)*puVar1;" (assignment_expression "puVar1 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }))) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }))))))))))))))))))))))))))))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00370e80(long param_1,undefined *param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00370e80(long param_1,undefined *param_2)" (* "*") (function_declarator "FUN_00370e80(long param_1,undefined *param_2)" (identifier "FUN_00370e80") (parameter_list "(long param_1,undefined *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined *param_2" (type_identifier "undefined") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  bool bVar4;\n  \n  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);" (assignment_expression "puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" (identifier "FUN_00379590") (argument_list "(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&PTR_PTR_FUN_004b4638" (& "&") (identifier "PTR_PTR_FUN_004b4638")) (, ",") (pointer_expression "&PTR_PTR_FUN_004b6308" (& "&") (identifier "PTR_PTR_FUN_004b6308")) () ")"))))) (; ";")) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" (if "if") (parenthesized_expression "(puVar1 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar1 == (undefined8 *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }\n  }" ({ "{") (if_statement "if (param_2 == PTR_DAT_004b9c90) {\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9c90)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9c90" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9c90")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b5290;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      *(undefined2 *)(puVar3 + 9) = 0;\n      *(undefined1 *)(puVar3 + 0x11) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8e78;\n                    \n      FUN_0037b2b0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6398;\n                    \n      FUN_00373a20(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x90)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x90)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x90)" (identifier "FUN_00337270") (argument_list "(0x90)" (( "(") (number_literal "0x90") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b5290;" (assignment_expression "*puVar3 = &PTR_FUN_004b5290" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b5290" (& "&") (identifier "PTR_FUN_004b5290"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar3 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 9)" (* "*") (cast_expression "(undefined2 *)(puVar3 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 9)" (( "(") (binary_expression "puVar3 + 9" (identifier "puVar3") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x11)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x11)" (( "(") (binary_expression "puVar3 + 0x11" (identifier "puVar3") (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8e78;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e78" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8e78" (& "&") (identifier "PTR_FUN_004b8e78"))) (; ";")) (expression_statement "FUN_0037b2b0(puVar1,0);" (call_expression "FUN_0037b2b0(puVar1,0)" (identifier "FUN_0037b2b0") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b6398;" (assignment_expression "*puVar1 = &PTR_FUN_004b6398" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6398" (& "&") (identifier "PTR_FUN_004b6398"))) (; ";")) (expression_statement "FUN_00373a20(param_1,puVar3);" (call_expression "FUN_00373a20(param_1,puVar3)" (identifier "FUN_00373a20") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9a38) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }\n    else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9a38)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9a38" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9a38")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8e08;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b63e0;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x20)" (identifier "FUN_00337270") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8e08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8e08" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8e08" (& "&") (identifier "PTR_FUN_004b8e08"))) (; ";")) (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" (identifier "uVar2") (= "=") (call_expression "FUN_0033ad40()" (identifier "FUN_0033ad40") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004b63e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b63e0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b63e0" (& "&") (identifier "PTR_FUN_004b63e0"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9df8) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }\n    else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9df8)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9df8" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9df8")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9140;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6638;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b9140;" (assignment_expression "*puVar1 = &PTR_FUN_004b9140" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b9140" (& "&") (identifier "PTR_FUN_004b9140"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004b6638;" (assignment_expression "*puVar1 = &PTR_FUN_004b6638" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6638" (& "&") (identifier "PTR_FUN_004b6638"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9ce0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }\n    else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9ce0)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9ce0" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9ce0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b90e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6ed0;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b90e0;" (assignment_expression "*puVar1 = &PTR_FUN_004b90e0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b90e0" (& "&") (identifier "PTR_FUN_004b90e0"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6ed0;" (assignment_expression "*puVar1 = &PTR_FUN_004a6ed0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6ed0" (& "&") (identifier "PTR_FUN_004a6ed0"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9bc0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }\n    else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9bc0)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9bc0" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9bc0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b9110;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f00;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b9110;" (assignment_expression "*puVar1 = &PTR_FUN_004b9110" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b9110" (& "&") (identifier "PTR_FUN_004b9110"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6f00;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f00" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6f00" (& "&") (identifier "PTR_FUN_004a6f00"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9d78) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9d78)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9d78" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9d78")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5270;\n      puVar3[2] = 0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f08;\n                    \n      FUN_0037b810(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6418;\n                    \n      FUN_003740f0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x70)" (identifier "FUN_00337270") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" (* "*") (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x22)" (( "(") (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x22")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b5270;" (assignment_expression "*puVar3 = &PTR_FUN_004b5270" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b5270" (& "&") (identifier "PTR_FUN_004b5270"))) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xc)" (( "(") (binary_expression "puVar3 + 0xc" (identifier "puVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" (* "*") (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x6f)" (( "(") (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8f08;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f08" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8f08" (& "&") (identifier "PTR_FUN_004b8f08"))) (; ";")) (expression_statement "FUN_0037b810(puVar1,0,0);" (call_expression "FUN_0037b810(puVar1,0,0)" (identifier "FUN_0037b810") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b6418;" (assignment_expression "*puVar1 = &PTR_FUN_004b6418" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6418" (& "&") (identifier "PTR_FUN_004b6418"))) (; ";")) (expression_statement "FUN_003740f0(param_1,puVar3);" (call_expression "FUN_003740f0(param_1,puVar3)" (identifier "FUN_003740f0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9e18) {\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9e18)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9e18" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9e18")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_004b5250;\n      puVar3[3] = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      *(undefined4 *)(puVar3 + 0xc) = 0;\n      *(undefined1 *)((long)puVar3 + 0x6f) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8f70;\n                    \n      FUN_0037bd30(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6480;\n                    \n      FUN_00374410(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x70)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x70)" (identifier "FUN_00337270") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar3 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x22)" (* "*") (cast_expression "(undefined1 *)((long)puVar3 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x22)" (( "(") (binary_expression "(long)puVar3 + 0x22" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x22")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b5250;" (assignment_expression "*puVar3 = &PTR_FUN_004b5250" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b5250" (& "&") (identifier "PTR_FUN_004b5250"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xc)" (( "(") (binary_expression "puVar3 + 0xc" (identifier "puVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar3 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar3 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar3 + 0x6f)" (* "*") (cast_expression "(undefined1 *)((long)puVar3 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x6f)" (( "(") (binary_expression "(long)puVar3 + 0x6f" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8f70;" (assignment_expression "*puVar1 = &PTR_FUN_004b8f70" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8f70" (& "&") (identifier "PTR_FUN_004b8f70"))) (; ";")) (expression_statement "FUN_0037bd30(puVar1,0,0);" (call_expression "FUN_0037bd30(puVar1,0,0)" (identifier "FUN_0037bd30") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b6480;" (assignment_expression "*puVar1 = &PTR_FUN_004b6480" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6480" (& "&") (identifier "PTR_FUN_004b6480"))) (; ";")) (expression_statement "FUN_00374410(param_1,puVar3);" (call_expression "FUN_00374410(param_1,puVar3)" (identifier "FUN_00374410") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9df0) {\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }\n    else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9df0)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9df0" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9df0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_003ad270(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f30;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "FUN_003ad270(puVar1,0);" (call_expression "FUN_003ad270(puVar1,0)" (identifier "FUN_003ad270") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6f30;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f30" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6f30" (& "&") (identifier "PTR_FUN_004a6f30"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9de8) {\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9de8)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9de8" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9de8")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b72f0;\n      puVar3[3] = 0;\n      puVar3[5] = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      *(undefined1 *)(puVar3 + 0x29) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8888;\n                    \n      FUN_0037b580(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b64e8;\n                    \n      FUN_00373c80(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0x150)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x150)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x150)" (identifier "FUN_00337270") (argument_list "(0x150)" (( "(") (number_literal "0x150") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b72f0;" (assignment_expression "*puVar3 = &PTR_FUN_004b72f0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b72f0" (& "&") (identifier "PTR_FUN_004b72f0"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 0x29) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x29) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x29)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 0x29)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x29)" (( "(") (binary_expression "puVar3 + 0x29" (identifier "puVar3") (+ "+") (number_literal "0x29")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8888;" (assignment_expression "*puVar1 = &PTR_FUN_004b8888" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8888" (& "&") (identifier "PTR_FUN_004b8888"))) (; ";")) (expression_statement "FUN_0037b580(puVar1,0);" (call_expression "FUN_0037b580(puVar1,0)" (identifier "FUN_0037b580") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b64e8;" (assignment_expression "*puVar1 = &PTR_FUN_004b64e8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b64e8" (& "&") (identifier "PTR_FUN_004b64e8"))) (; ";")) (expression_statement "FUN_00373c80(param_1,puVar3);" (call_expression "FUN_00373c80(param_1,puVar3)" (identifier "FUN_00373c80") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9d28) {\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }\n    else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9d28)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9d28" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9d28")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_004b8818;\n                    \n      uVar2 = FUN_0033ad40();\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[2] = uVar2;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6530;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x20)" (identifier "FUN_00337270") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8818;" (assignment_expression "*puVar1 = &PTR_FUN_004b8818" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8818" (& "&") (identifier "PTR_FUN_004b8818"))) (; ";")) (expression_statement "uVar2 = FUN_0033ad40();" (assignment_expression "uVar2 = FUN_0033ad40()" (identifier "uVar2") (= "=") (call_expression "FUN_0033ad40()" (identifier "FUN_0033ad40") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[2] = uVar2;" (assignment_expression "puVar1[2] = uVar2" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004b6530;" (assignment_expression "*puVar1 = &PTR_FUN_004b6530" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6530" (& "&") (identifier "PTR_FUN_004b6530"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9c68) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }\n    else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9c68)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9c68" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9c68")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b50;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004b6690;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8b50;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b50" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8b50" (& "&") (identifier "PTR_FUN_004b8b50"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004b6690;" (assignment_expression "*puVar1 = &PTR_FUN_004b6690" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6690" (& "&") (identifier "PTR_FUN_004b6690"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9d70) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }\n    else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9d70)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9d70" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9d70")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8af0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f68;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8af0;" (assignment_expression "*puVar1 = &PTR_FUN_004b8af0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8af0" (& "&") (identifier "PTR_FUN_004b8af0"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6f68;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f68" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6f68" (& "&") (identifier "PTR_FUN_004a6f68"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9f78) {\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }\n    else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9f78)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9f78" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9f78")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_00337270(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004b8b20;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6f98;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x18)" (identifier "FUN_00337270") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = param_1;" (assignment_expression "puVar1[2] = param_1" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8b20;" (assignment_expression "*puVar1 = &PTR_FUN_004b8b20" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8b20" (& "&") (identifier "PTR_FUN_004b8b20"))) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6f98;" (assignment_expression "*puVar1 = &PTR_FUN_004a6f98" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6f98" (& "&") (identifier "PTR_FUN_004a6f98"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9db8) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9db8)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9db8" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9db8")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7340;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8918;\n                    \n      FUN_0037c450(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b6568;\n                    \n      FUN_00374730(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0xa0)" (identifier "FUN_00337270") (argument_list "(0xa0)" (( "(") (number_literal "0xa0") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b7340;" (assignment_expression "*puVar3 = &PTR_FUN_004b7340" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b7340" (& "&") (identifier "PTR_FUN_004b7340"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" (* "*") (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x24)" (( "(") (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" (identifier "puVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0xd)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xd)" (( "(") (binary_expression "puVar3 + 0xd" (identifier "puVar3") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x13)" (( "(") (binary_expression "puVar3 + 0x13" (identifier "puVar3") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8918;" (assignment_expression "*puVar1 = &PTR_FUN_004b8918" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8918" (& "&") (identifier "PTR_FUN_004b8918"))) (; ";")) (expression_statement "FUN_0037c450(puVar1,0,0);" (call_expression "FUN_0037c450(puVar1,0,0)" (identifier "FUN_0037c450") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b6568;" (assignment_expression "*puVar1 = &PTR_FUN_004b6568" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b6568" (& "&") (identifier "PTR_FUN_004b6568"))) (; ";")) (expression_statement "FUN_00374730(param_1,puVar3);" (call_expression "FUN_00374730(param_1,puVar3)" (identifier "FUN_00374730") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_004b9d38) {\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_004b9d38)" (( "(") (binary_expression "param_2 == PTR_DAT_004b9d38" (identifier "param_2") (== "==") (identifier "PTR_DAT_004b9d38")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_00337270(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_004b7360;\n      puVar3[3] = 0;\n      *(undefined8 *)((long)puVar3 + 0x24) = 0;\n      puVar3[6] = 0;\n      puVar3[7] = 0;\n      puVar3[8] = 0;\n      puVar3[9] = 0;\n      puVar3[10] = 0;\n      puVar3[0xb] = 0;\n      puVar3[0xc] = 0;\n      *(undefined4 *)(puVar3 + 0xd) = 0;\n      *(undefined1 *)(puVar3 + 0x13) = 0;\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_004b8980;\n                    \n      FUN_0037ca00(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_004b65d0;\n                    \n      FUN_00374ad0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_00337270(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_00337270(0xa0)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0xa0)" (identifier "FUN_00337270") (argument_list "(0xa0)" (( "(") (number_literal "0xa0") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[2] = 0;" (assignment_expression "puVar3[2] = 0" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 4)" (( "(") (binary_expression "puVar3 + 4" (identifier "puVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_004b7360;" (assignment_expression "*puVar3 = &PTR_FUN_004b7360" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_004b7360" (& "&") (identifier "PTR_FUN_004b7360"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)((long)puVar3 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar3 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar3 + 0x24)" (* "*") (cast_expression "(undefined8 *)((long)puVar3 + 0x24)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar3 + 0x24)" (( "(") (binary_expression "(long)puVar3 + 0x24" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[6] = 0;" (assignment_expression "puVar3[6] = 0" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[7] = 0;" (assignment_expression "puVar3[7] = 0" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[9] = 0;" (assignment_expression "puVar3[9] = 0" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[10] = 0;" (assignment_expression "puVar3[10] = 0" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xb] = 0;" (assignment_expression "puVar3[0xb] = 0" (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[0xc] = 0;" (assignment_expression "puVar3[0xc] = 0" (subscript_expression "puVar3[0xc]" (identifier "puVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar3 + 0xd)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0xd)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xd)" (( "(") (binary_expression "puVar3 + 0xd" (identifier "puVar3") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 0x13)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x13)" (( "(") (binary_expression "puVar3 + 0x13" (identifier "puVar3") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar1 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar1 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = puVar3;" (assignment_expression "puVar1[2] = puVar3" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b8980;" (assignment_expression "*puVar1 = &PTR_FUN_004b8980" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b8980" (& "&") (identifier "PTR_FUN_004b8980"))) (; ";")) (expression_statement "FUN_0037ca00(puVar1,0,0);" (call_expression "FUN_0037ca00(puVar1,0,0)" (identifier "FUN_0037ca00") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[3] = param_1;" (assignment_expression "puVar1[3] = param_1" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar1[4] = puVar3;" (assignment_expression "puVar1[4] = puVar3" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004b65d0;" (assignment_expression "*puVar1 = &PTR_FUN_004b65d0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004b65d0" (& "&") (identifier "PTR_FUN_004b65d0"))) (; ";")) (expression_statement "FUN_00374ad0(param_1,puVar3);" (call_expression "FUN_00374ad0(param_1,puVar3)" (identifier "FUN_00374ad0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" (else "else") (compound_statement "{\n      if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_00337270(0x28);\n                    \n      FUN_0039e0f0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;\n      puVar1[4] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_004a6fc8;\n    }" ({ "{") (if_statement "if (param_2 != PTR_DAT_004b9f48) {\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" (if "if") (parenthesized_expression "(param_2 != PTR_DAT_004b9f48)" (( "(") (binary_expression "param_2 != PTR_DAT_004b9f48" (identifier "param_2") (!= "!=") (identifier "PTR_DAT_004b9f48")) () ")")) (compound_statement "{\n                    \n        FUN_003772b0("cannot create shim for unknown locale::facet");\n      }" ({ "{") (expression_statement "FUN_003772b0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003772b0("cannot create shim for unknown locale::facet")" (identifier "FUN_003772b0") (argument_list "("cannot create shim for unknown locale::facet")" (( "(") (string_literal ""cannot create shim for unknown locale::facet"" (" """) (string_content "cannot create shim for unknown locale::facet") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1 = (undefined8 *)FUN_00337270(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_00337270(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_00337270(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(0x28)" (identifier "FUN_00337270") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "FUN_0039e0f0(puVar1,0);" (call_expression "FUN_0039e0f0(puVar1,0)" (identifier "FUN_0039e0f0") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_004b9ee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004b9ee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar1[4] = param_1;" (assignment_expression "puVar1[4] = param_1" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar1 = &PTR_FUN_004a6fc8;" (assignment_expression "*puVar1 = &PTR_FUN_004a6fc8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004a6fc8" (& "&") (identifier "PTR_FUN_004a6fc8"))) (; ";")) (} "}")))))))))))))))))))))))))))))))) (} "}")) (else_clause "else {\n    puVar1 = (undefined8 *)*puVar1;\n  }" (else "else") (compound_statement "{\n    puVar1 = (undefined8 *)*puVar1;\n  }" ({ "{") (expression_statement "puVar1 = (undefined8 *)*puVar1;" (assignment_expression "puVar1 = (undefined8 *)*puVar1" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (} "}")))) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))

/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */

type_2 * __thiscall std::locale::facet::_M_sso_shim(facet *var_10,type_4 *var_3)

{
  type_1 *var_2;
  type_2 *this_00;
  type_3 *var_5;
  bool bVar3;
  
  var_2 = (type_1 *)var_1(var_10,&typeinfo,&__shim::typeinfo);
  if (var_2 == (type_1 *)0x0) {
    if (var_3 == (type_4 *)PTR_id_004b9c90) {
      var_5 = (type_3 *)var_4(0x90);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_1 *)(var_5 + 0x10) = 0;
      var_5[0x20] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____numpunct_cache_004b5290;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_1 *)(var_5 + 0x28) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_7 *)(var_5 + 0x48) = 0;
      var_5[0x88] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__numpunct_004b8e78;
                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */
      var_6<var_7>::var_8((var_6<var_7> *)this_00,(type_2 *)0x0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__numpunct_shim_004b6398;
                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */
      __facet_shims::var_13<var_7>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_004b9a38) {
      this_00 = (type_2 *)var_4(0x20);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (type_3 *)&PTR__collate_004b8e08;
                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */
      var_5 = (type_3 *)var_14();
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[2] = var_5;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__collate_shim_004b63e0;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9df8) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__time_get_004b9140;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__time_get_shim_004b6638;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9ce0) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__money_get_004b90e0;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__money_get_shim_004a6ed0;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9bc0) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__money_put_004b9110;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__money_put_shim_004a6f00;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9d78) {
      var_5 = (type_3 *)var_4(0x70);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_7 *)(var_5 + 0x20) = 0;
      var_5[0x22] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____moneypunct_cache_004b5270;
      *(type_1 *)(var_5 + 0x10) = 0;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_1 *)(var_5 + 0x28) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_1 *)(var_5 + 0x48) = 0;
      *(type_1 *)(var_5 + 0x50) = 0;
      *(type_1 *)(var_5 + 0x58) = 0;
      *(type_5 *)(var_5 + 0x60) = 0;
      var_5[0x6f] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_004b8f08;
                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */
      var_15<var_7,true>::var_16(this_00,(char *)0x0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_shim_004b6418;
                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */
      __facet_shims::var_17<var_7,true>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_004b9e18) {
      var_5 = (type_3 *)var_4(0x70);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_1 *)(var_5 + 0x10) = 0;
      var_5[0x22] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____moneypunct_cache_004b5250;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_7 *)(var_5 + 0x20) = 0;
      *(type_1 *)(var_5 + 0x28) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_1 *)(var_5 + 0x48) = 0;
      *(type_1 *)(var_5 + 0x50) = 0;
      *(type_1 *)(var_5 + 0x58) = 0;
      *(type_5 *)(var_5 + 0x60) = 0;
      var_5[0x6f] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_004b8f70;
                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */
      var_15<var_7,false>::var_16(this_00,(char *)0x0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_shim_004b6480;
                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */
      __facet_shims::var_17<var_7,false>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_004b9df0) {
      this_00 = (type_2 *)var_4(0x28);
                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */
      var_18<var_7>::var_18((var_18<var_7> *)this_00,0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[4] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__messages_shim_004a6f30;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9de8) {
      var_5 = (type_3 *)var_4(0x150);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_1 *)(var_5 + 0x10) = 0;
      var_5[0x20] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____numpunct_cache_004b72f0;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_1 *)(var_5 + 0x28) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_1 *)(var_5 + 0x48) = 0;
      var_5[0x148] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__numpunct_004b8888;
                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */
      var_6<var_19>::var_8((var_6<var_19> *)this_00,(type_2 *)0x0)
      ;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__numpunct_shim_004b64e8;
                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */
      __facet_shims::var_13<var_19>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_004b9d28) {
      this_00 = (type_2 *)var_4(0x20);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (type_3 *)&PTR__collate_004b8818;
                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */
      var_5 = (type_3 *)var_14();
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[2] = var_5;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__collate_shim_004b6530;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9c68) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__time_get_004b8b50;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__time_get_shim_004b6690;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9d70) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__money_get_004b8af0;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__money_get_shim_004a6f68;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9f78) {
      this_00 = (type_2 *)var_4(0x18);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = (type_3 *)var_10;
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[0] = (type_3 *)&PTR__money_put_004b8b20;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__money_put_shim_004a6f98;
    }
    else if (var_3 == (type_4 *)PTR_id_004b9db8) {
      var_5 = (type_3 *)var_4(0xa0);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_1 *)(var_5 + 0x10) = 0;
      var_5[0x20] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____moneypunct_cache_004b7340;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_1 *)(var_5 + 0x24) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_1 *)(var_5 + 0x48) = 0;
      *(type_1 *)(var_5 + 0x50) = 0;
      *(type_1 *)(var_5 + 0x58) = 0;
      *(type_1 *)(var_5 + 0x60) = 0;
      *(type_5 *)(var_5 + 0x68) = 0;
      var_5[0x98] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_004b8918;
                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */
      var_15<var_19,true>::var_16(this_00,(char *)0x0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_shim_004b6568;
                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */
      __facet_shims::var_17<var_19,true>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_004b9d38) {
      var_5 = (type_3 *)var_4(0xa0);
      *(type_5 *)(var_5 + 8) = 0;
      *(type_1 *)(var_5 + 0x10) = 0;
      var_5[0x20] = (type_3)0x0;
      *(type_6 ***)var_5 = &PTR____moneypunct_cache_004b7360;
      *(type_1 *)(var_5 + 0x18) = 0;
      *(type_1 *)(var_5 + 0x24) = 0;
      *(type_1 *)(var_5 + 0x30) = 0;
      *(type_1 *)(var_5 + 0x38) = 0;
      *(type_1 *)(var_5 + 0x40) = 0;
      *(type_1 *)(var_5 + 0x48) = 0;
      *(type_1 *)(var_5 + 0x50) = 0;
      *(type_1 *)(var_5 + 0x58) = 0;
      *(type_1 *)(var_5 + 0x60) = 0;
      *(type_5 *)(var_5 + 0x68) = 0;
      var_5[0x98] = (type_3)0x0;
      this_00 = (type_2 *)var_4(0x28);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[2] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_004b8980;
                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */
      var_15<var_19,false>::var_16(this_00,(char *)0x0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[3] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[4] = var_5;
      this_00->__locales[0] = (type_3 *)&PTR__moneypunct_shim_004b65d0;
                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */
      __facet_shims::var_17<var_19,false>(var_10,var_5);
    }
    else {
      if (var_3 != (type_4 *)PTR_id_004b9f48) {
                    /* WARNING: Subroutine does not return */
        var_20("cannot create shim for unknown locale::facet");
      }
      this_00 = (type_2 *)var_4(0x28);
                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */
      var_18<var_19>::var_18((var_18<var_19> *)this_00,0);
      bVar3 = var_9 == (type_6 *)0x0;
      this_00->__locales[4] = (type_3 *)var_10;
      if (bVar3) {
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 8) = *(int *)(var_10 + 8) + 1;
        var_12();
      }
      this_00->__locales[0] = (type_3 *)&PTR__messages_shim_004a6fc8;
    }
  }
  else {
    this_00 = (type_2 *)*var_2;
  }
  return this_00;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))))))))))))))))))))))))))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (return_statement (identifier)))))

undefined8 * MASKED(long param_1,undefined *param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  bool bVar4;
  
  puVar1 = (undefined8 *)FUN_00379590(param_1,&PTR_PTR_FUN_004b4638,&PTR_PTR_FUN_004b6308);
  if (puVar1 == (undefined8 *)0x0) {
    if (param_2 == PTR_DAT_004b9c90) {
      puVar3 = (undefined8 *)FUN_00337270(0x90);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b5290;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      *(undefined2 *)(puVar3 + 9) = 0;
      *(undefined1 *)(puVar3 + 0x11) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8e78;
                    /* try { // try from 00371063 to 00371067 has its CatchHandler @ 003718de */
      FUN_0037b2b0(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6398;
                    /* try { // try from 0037108f to 00371093 has its CatchHandler @ 0037193e */
      FUN_00373a20(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9a38) {
      puVar1 = (undefined8 *)FUN_00337270(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_004b8e08;
                    /* try { // try from 00371172 to 00371176 has its CatchHandler @ 00371936 */
      uVar2 = FUN_0033ad40();
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[2] = uVar2;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b63e0;
    }
    else if (param_2 == PTR_DAT_004b9df8) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b9140;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6638;
    }
    else if (param_2 == PTR_DAT_004b9ce0) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b90e0;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6ed0;
    }
    else if (param_2 == PTR_DAT_004b9bc0) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b9110;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f00;
    }
    else if (param_2 == PTR_DAT_004b9d78) {
      puVar3 = (undefined8 *)FUN_00337270(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_004b5270;
      puVar3[2] = 0;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      *(undefined4 *)(puVar3 + 0xc) = 0;
      *(undefined1 *)((long)puVar3 + 0x6f) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8f08;
                    /* try { // try from 0037130e to 00371312 has its CatchHandler @ 0037190e */
      FUN_0037b810(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6418;
                    /* try { // try from 0037133e to 00371342 has its CatchHandler @ 00371946 */
      FUN_003740f0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9e18) {
      puVar3 = (undefined8 *)FUN_00337270(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_004b5250;
      puVar3[3] = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      *(undefined4 *)(puVar3 + 0xc) = 0;
      *(undefined1 *)((long)puVar3 + 0x6f) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8f70;
                    /* try { // try from 0037141e to 00371422 has its CatchHandler @ 003718d6 */
      FUN_0037bd30(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6480;
                    /* try { // try from 0037144e to 00371452 has its CatchHandler @ 0037192e */
      FUN_00374410(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9df0) {
      puVar1 = (undefined8 *)FUN_00337270(0x28);
                    /* try { // try from 00371482 to 00371486 has its CatchHandler @ 0037191e */
      FUN_003ad270(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[4] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f30;
    }
    else if (param_2 == PTR_DAT_004b9de8) {
      puVar3 = (undefined8 *)FUN_00337270(0x150);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b72f0;
      puVar3[3] = 0;
      puVar3[5] = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      *(undefined1 *)(puVar3 + 0x29) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8888;
                    /* try { // try from 0037155c to 00371560 has its CatchHandler @ 003718ee */
      FUN_0037b580(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b64e8;
                    /* try { // try from 0037158c to 00371590 has its CatchHandler @ 00371916 */
      FUN_00373c80(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9d28) {
      puVar1 = (undefined8 *)FUN_00337270(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_004b8818;
                    /* try { // try from 00371118 to 0037111c has its CatchHandler @ 003718fe */
      uVar2 = FUN_0033ad40();
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[2] = uVar2;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6530;
    }
    else if (param_2 == PTR_DAT_004b9c68) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8b50;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004b6690;
    }
    else if (param_2 == PTR_DAT_004b9d70) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8af0;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f68;
    }
    else if (param_2 == PTR_DAT_004b9f78) {
      puVar1 = (undefined8 *)FUN_00337270(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004b8b20;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6f98;
    }
    else if (param_2 == PTR_DAT_004b9db8) {
      puVar3 = (undefined8 *)FUN_00337270(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b7340;
      puVar3[3] = 0;
      *(undefined8 *)((long)puVar3 + 0x24) = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      puVar3[0xc] = 0;
      *(undefined4 *)(puVar3 + 0xd) = 0;
      *(undefined1 *)(puVar3 + 0x13) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8918;
                    /* try { // try from 0037175d to 00371761 has its CatchHandler @ 003718f6 */
      FUN_0037c450(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b6568;
                    /* try { // try from 0037178d to 00371791 has its CatchHandler @ 00371906 */
      FUN_00374730(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_004b9d38) {
      puVar3 = (undefined8 *)FUN_00337270(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_004b7360;
      puVar3[3] = 0;
      *(undefined8 *)((long)puVar3 + 0x24) = 0;
      puVar3[6] = 0;
      puVar3[7] = 0;
      puVar3[8] = 0;
      puVar3[9] = 0;
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      puVar3[0xc] = 0;
      *(undefined4 *)(puVar3 + 0xd) = 0;
      *(undefined1 *)(puVar3 + 0x13) = 0;
      puVar1 = (undefined8 *)FUN_00337270(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_004b8980;
                    /* try { // try from 0037186b to 0037186f has its CatchHandler @ 003718ce */
      FUN_0037ca00(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[3] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      puVar1[4] = puVar3;
      *puVar1 = &PTR_FUN_004b65d0;
                    /* try { // try from 00371897 to 0037189b has its CatchHandler @ 00371926 */
      FUN_00374ad0(param_1,puVar3);
    }
    else {
      if (param_2 != PTR_DAT_004b9f48) {
                    /* WARNING: Subroutine does not return */
        FUN_003772b0("cannot create shim for unknown locale::facet");
      }
      puVar1 = (undefined8 *)FUN_00337270(0x28);
                    /* try { // try from 00370f9a to 00370f9e has its CatchHandler @ 003718e6 */
      FUN_0039e0f0(puVar1,0);
      bVar4 = PTR___pthread_key_create_004b9ee8 == (undefined *)0x0;
      puVar1[4] = param_1;
      if (bVar4) {
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
        UNLOCK();
      }
      *puVar1 = &PTR_FUN_004a6fc8;
    }
  }
  else {
    puVar1 = (undefined8 *)*puVar1;
  }
  return puVar1;
}

