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

__locale_struct * __thiscall std::locale::facet::_M_cow_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_0043dda8) {
      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_00439298;
      *(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_00438ca0;
                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */
      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;
                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */
      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_0043de10) {
      this_00 = (__locale_struct *)operator_new(0x20);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;
                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */
      p_Var2 = (__locale_data *)_S_get_c_locale();
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;
    }
    else if (param_1 == (id *)PTR_id_0043dda0) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;
      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_0042ebd0;
    }
    else if (param_1 == (id *)PTR_id_0043df98) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;
      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_0042eaa0;
    }
    else if (param_1 == (id *)PTR_id_0043dc50) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;
      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_0042ead0;
    }
    else if (param_1 == (id *)PTR_id_0043de60) {
      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_00439278;
      *(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_00438e48;
                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */
      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;
                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */
      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_0043dae8) {
      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_00439258;
      *(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_00438eb0;
                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */
      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;
                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */
      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_0043dd80) {
      this_00 = (__locale_struct *)operator_new(0x28);
                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */
      messages<char>::messages((messages<char> *)this_00,0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;
    }
    else if (param_1 == (id *)PTR_id_0043de78) {
      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_0043b2f8;
      *(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_0043bd80;
                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */
      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)
      ;
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;
                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */
      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_0043dac0) {
      this_00 = (__locale_struct *)operator_new(0x20);
      *(undefined4 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;
                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */
      p_Var2 = (__locale_data *)_S_get_c_locale();
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;
    }
    else if (param_1 == (id *)PTR_id_0043dfa8) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;
      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_0042ec20;
    }
    else if (param_1 == (id *)PTR_id_0043dec8) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;
      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_0042eb38;
    }
    else if (param_1 == (id *)PTR_id_0043dfa0) {
      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_0043dee8 == (undefined *)0x0;
      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;
      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_0042eb68;
    }
    else if (param_1 == (id *)PTR_id_0043db78) {
      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_0043b348;
      *(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_0043bf28;
                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */
      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;
                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */
      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);
    }
    else if (param_1 == (id *)PTR_id_0043dd08) {
      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_0043b368;
      *(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_0043bf90;
                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */
      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;
                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */
      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);
    }
    else {
      if (param_1 != (id *)PTR_id_0043da98) {
                    /* 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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */
      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);
      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;
    }
  }
  else {
    this_00 = (__locale_struct *)*puVar1;
  }
  return this_00;
}



undefined8 * FUN_00317c10(long param_1,undefined *param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  bool bVar4;
  
  puVar1 = (undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);
  if (puVar1 == (undefined8 *)0x0) {
    if (param_2 == PTR_DAT_0043dda8) {
      puVar3 = (undefined8 *)FUN_002d9490(0x90);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_00439298;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438ca0;
                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */
      FUN_0031f430(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;
                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */
      FUN_00311a60(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043de10) {
      puVar1 = (undefined8 *)FUN_002d9490(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_00438c30;
                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */
      uVar2 = FUN_002dcf60();
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;
    }
    else if (param_2 == PTR_DAT_0043dda0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_00439180;
      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_0042ebd0;
    }
    else if (param_2 == PTR_DAT_0043df98) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004390d0;
      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_0042eaa0;
    }
    else if (param_2 == PTR_DAT_0043dc50) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_00439100;
      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_0042ead0;
    }
    else if (param_2 == PTR_DAT_0043de60) {
      puVar3 = (undefined8 *)FUN_002d9490(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_00439278;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438e48;
                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */
      FUN_0031fc50(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;
                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */
      FUN_00311ec0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dae8) {
      puVar3 = (undefined8 *)FUN_002d9490(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_00439258;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438eb0;
                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */
      FUN_00320170(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;
                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */
      FUN_003120a0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dd80) {
      puVar1 = (undefined8 *)FUN_002d9490(0x28);
                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */
      FUN_002ec000(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;
    }
    else if (param_2 == PTR_DAT_0043de78) {
      puVar3 = (undefined8 *)FUN_002d9490(0x150);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b2f8;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bd80;
                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */
      FUN_0031f700(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;
                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */
      FUN_00311bd0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dac0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_0043bc90;
                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */
      uVar2 = FUN_002dcf60();
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;
    }
    else if (param_2 == PTR_DAT_0043dfa8) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c260;
      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_0042ec20;
    }
    else if (param_2 == PTR_DAT_0043dec8) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c1b0;
      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_0042eb38;
    }
    else if (param_2 == PTR_DAT_0043dfa0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c1e0;
      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_0042eb68;
    }
    else if (param_2 == PTR_DAT_0043db78) {
      puVar3 = (undefined8 *)FUN_002d9490(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b348;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bf28;
                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */
      FUN_00320890(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;
                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */
      FUN_00312280(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dd08) {
      puVar3 = (undefined8 *)FUN_002d9490(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b368;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bf90;
                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */
      FUN_00320e40(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;
                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */
      FUN_003124e0(param_1,puVar3);
    }
    else {
      if (param_2 != PTR_DAT_0043da98) {
                    /* WARNING: Subroutine does not return */
        FUN_003194d0("cannot create shim for unknown locale::facet");
      }
      puVar1 = (undefined8 *)FUN_002d9490(0x28);
                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */
      FUN_00326fc0(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;
    }
  }
  else {
    puVar1 = (undefined8 *)*puVar1;
  }
  return puVar1;
}


PUSH R12
LEA RDX,[0x43a310]
MOV RCX,-0x2
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
LEA RSI,[0x438640]
CALL 0x0031b7b0
TEST RAX,RAX
JZ 0x00317c48
MOV RBX,qword ptr [RAX]
MOV RAX,RBX
POP RBX
POP RBP
POP R12
RET
CMP RBX,qword ptr [0x0043dda8]
JZ 0x00317d58
CMP RBX,qword ptr [0x0043de10]
JZ 0x00317ee0
CMP RBX,qword ptr [0x0043dda0]
JZ 0x00317e30
CMP RBX,qword ptr [0x0043df98]
JZ 0x00317f38
CMP RBX,qword ptr [0x0043dc50]
JZ 0x00317f80
CMP RBX,qword ptr [0x0043de60]
JZ 0x00317fe0
CMP RBX,qword ptr [0x0043dae8]
JZ 0x003180f0
CMP RBX,qword ptr [0x0043dd80]
JZ 0x00318200
CMP RBX,qword ptr [0x0043de78]
JZ 0x00318250
CMP RBX,qword ptr [0x0043dac0]
JZ 0x00317e86
CMP RBX,qword ptr [0x0043dfa8]
JZ 0x00318338
CMP RBX,qword ptr [0x0043dec8]
JZ 0x00318389
CMP RBX,qword ptr [0x0043dfa0]
JZ 0x003183da
CMP RBX,qword ptr [0x0043db78]
JZ 0x0031842b
CMP RBX,qword ptr [0x0043dd08]
JZ 0x00318539
CMP RBX,qword ptr [0x0043da98]
JNZ 0x00318652
MOV EDI,0x28
CALL 0x002d9490
XOR ESI,ESI
MOV RDI,RAX
MOV RBX,RAX
CALL 0x00326fc0
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x20],RBP
JZ 0x0031832f
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42eb98]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
MOV EDI,0x90
CALL 0x002d9490
XOR ECX,ECX
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x439288]
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 0x002d9490
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x438c90]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0031f430
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00317e80
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43abd8]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00311a60
JMP 0x00317c3c
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x439170]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003180e0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42ebd0]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317e0b
MOV EDI,0x20
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43bc80]
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x002dcf60
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00318527
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ad70]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
MOV EDI,0x20
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x438c20]
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x002dcf60
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00317fd0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ac20]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4390c0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x003181f0
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42eaa0]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x4390f0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x00318240
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42ead0]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317f22
MOV EDI,0x70
CALL 0x002d9490
XOR EDX,EDX
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x439268]
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 0x002d9490
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x438e38]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0031fc50
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00318326
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ac58]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00311ec0
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317e69
MOV EDI,0x70
CALL 0x002d9490
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x439248]
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 0x002d9490
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x438ea0]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x00320170
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00318380
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43acc0]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x003120a0
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317f71
MOV EDI,0x28
CALL 0x002d9490
XOR ESI,ESI
MOV RDI,RAX
MOV RBX,RAX
CALL 0x002ec000
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x20],RBP
JZ 0x003183d1
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42eb00]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317fb9
MOV EDI,0x150
CALL 0x002d9490
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43b2e8]
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 0x002d9490
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43bd70]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x0031f700
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00318422
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ad28]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00311bd0
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003180ba
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317d46
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43c250]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x00318530
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42ec20]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003181ca
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43c1a0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x00318631
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42eb38]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x0031822e
MOV EDI,0x18
CALL 0x002d9490
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43c1d0]
MOV qword ptr [RBX + 0x10],RBP
ADD RAX,0x10
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX],RAX
JZ 0x0031863a
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x42eb68]
MOV qword ptr [RBX],RAX
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00318308
MOV EDI,0xa0
CALL 0x002d9490
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43b338]
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 0x002d9490
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43bf18]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x00320890
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x00318643
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ada8]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x00312280
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00317ec8
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00318371
MOV EDI,0xa0
CALL 0x002d9490
MOV EDI,0x28
MOV R12,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43b358]
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 0x002d9490
XOR EDX,EDX
XOR ESI,ESI
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x43bf80]
MOV qword ptr [RBX + 0x10],R12
MOV RDI,RBX
ADD RAX,0x10
MOV qword ptr [RBX],RAX
CALL 0x00320e40
CMP qword ptr [0x0043dee8],0x0
MOV qword ptr [RBX + 0x18],RBP
JZ 0x0031864c
ADD.LOCK dword ptr [RBP + 0x8],0x1
LEA RAX,[0x43ae10]
MOV qword ptr [RBX + 0x20],R12
MOV RSI,R12
MOV RDI,RBP
MOV qword ptr [RBX],RAX
CALL 0x003124e0
JMP 0x00317c3c
ADD dword ptr [RBP + 0x8],0x1
JMP 0x003183c2
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00318413
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00318509
ADD dword ptr [RBP + 0x8],0x1
JMP 0x00318613
LEA RDI,[0x392030]
CALL 0x003194d0
(translation_unit "undefined8 * FUN_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00317c10(long param_1,undefined *param_2)" * (function_declarator "FUN_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);" (assignment_expression "puVar1 = (undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" identifier = (cast_expression "(undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" identifier (argument_list "(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" ( identifier , (pointer_expression "&PTR_PTR_FUN_00438640" & identifier) , (pointer_expression "&PTR_PTR_FUN_0043a310" & identifier) ))))) ;) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dda8)" ( (binary_expression "param_2 == PTR_DAT_0043dda8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      FUN_00311a60(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x90)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439298;" (assignment_expression "*puVar3 = &PTR_FUN_00439298" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439298" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438ca0;" (assignment_expression "*puVar1 = &PTR_FUN_00438ca0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438ca0" & identifier)) ;) comment (expression_statement "FUN_0031f430(puVar1,0);" (call_expression "FUN_0031f430(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043abd8;" (assignment_expression "*puVar1 = &PTR_FUN_0043abd8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043abd8" & identifier)) ;) comment (expression_statement "FUN_00311a60(param_1,puVar3);" (call_expression "FUN_00311a60(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de10)" ( (binary_expression "param_2 == PTR_DAT_0043de10" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438c30;" (assignment_expression "*puVar1 = &PTR_FUN_00438c30" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438c30" & identifier)) ;) comment (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" identifier = (call_expression "FUN_002dcf60()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac20;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ac20" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dda0)" ( (binary_expression "param_2 == PTR_DAT_0043dda0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_00439180;" (assignment_expression "*puVar1 = &PTR_FUN_00439180" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00439180" & 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_0042ebd0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ebd0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ebd0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043df98)" ( (binary_expression "param_2 == PTR_DAT_0043df98" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004390d0;" (assignment_expression "*puVar1 = &PTR_FUN_004390d0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004390d0" & 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_0042eaa0;" (assignment_expression "*puVar1 = &PTR_FUN_0042eaa0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eaa0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dc50)" ( (binary_expression "param_2 == PTR_DAT_0043dc50" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_00439100;" (assignment_expression "*puVar1 = &PTR_FUN_00439100" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00439100" & 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_0042ead0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ead0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ead0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de60)" ( (binary_expression "param_2 == PTR_DAT_0043de60" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      FUN_00311ec0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439278;" (assignment_expression "*puVar3 = &PTR_FUN_00439278" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439278" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438e48;" (assignment_expression "*puVar1 = &PTR_FUN_00438e48" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438e48" & identifier)) ;) comment (expression_statement "FUN_0031fc50(puVar1,0,0);" (call_expression "FUN_0031fc50(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac58;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac58" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ac58" & identifier)) ;) comment (expression_statement "FUN_00311ec0(param_1,puVar3);" (call_expression "FUN_00311ec0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dae8)" ( (binary_expression "param_2 == PTR_DAT_0043dae8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      FUN_003120a0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439258;" (assignment_expression "*puVar3 = &PTR_FUN_00439258" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439258" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438eb0;" (assignment_expression "*puVar1 = &PTR_FUN_00438eb0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438eb0" & identifier)) ;) comment (expression_statement "FUN_00320170(puVar1,0,0);" (call_expression "FUN_00320170(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043acc0;" (assignment_expression "*puVar1 = &PTR_FUN_0043acc0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043acc0" & identifier)) ;) comment (expression_statement "FUN_003120a0(param_1,puVar3);" (call_expression "FUN_003120a0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dd80)" ( (binary_expression "param_2 == PTR_DAT_0043dd80" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "FUN_002ec000(puVar1,0);" (call_expression "FUN_002ec000(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb00;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb00" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb00" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de78)" ( (binary_expression "param_2 == PTR_DAT_0043de78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      FUN_00311bd0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x150)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x150)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b2f8;" (assignment_expression "*puVar3 = &PTR_FUN_0043b2f8" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b2f8" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bd80;" (assignment_expression "*puVar1 = &PTR_FUN_0043bd80" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bd80" & identifier)) ;) comment (expression_statement "FUN_0031f700(puVar1,0);" (call_expression "FUN_0031f700(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad28;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad28" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ad28" & identifier)) ;) comment (expression_statement "FUN_00311bd0(param_1,puVar3);" (call_expression "FUN_00311bd0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dac0)" ( (binary_expression "param_2 == PTR_DAT_0043dac0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bc90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bc90" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bc90" & identifier)) ;) comment (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" identifier = (call_expression "FUN_002dcf60()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad70;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad70" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ad70" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dfa8)" ( (binary_expression "param_2 == PTR_DAT_0043dfa8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c260;" (assignment_expression "*puVar1 = &PTR_FUN_0043c260" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c260" & 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_0042ec20;" (assignment_expression "*puVar1 = &PTR_FUN_0042ec20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ec20" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dec8)" ( (binary_expression "param_2 == PTR_DAT_0043dec8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c1b0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1b0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c1b0" & 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_0042eb38;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb38" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb38" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dfa0)" ( (binary_expression "param_2 == PTR_DAT_0043dfa0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c1e0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c1e0" & 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_0042eb68;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb68" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb68" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043db78)" ( (binary_expression "param_2 == PTR_DAT_0043db78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      FUN_00312280(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b348;" (assignment_expression "*puVar3 = &PTR_FUN_0043b348" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b348" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bf28;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf28" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bf28" & identifier)) ;) comment (expression_statement "FUN_00320890(puVar1,0,0);" (call_expression "FUN_00320890(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ada8;" (assignment_expression "*puVar1 = &PTR_FUN_0043ada8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ada8" & identifier)) ;) comment (expression_statement "FUN_00312280(param_1,puVar3);" (call_expression "FUN_00312280(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dd08)" ( (binary_expression "param_2 == PTR_DAT_0043dd08" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      FUN_003124e0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b368;" (assignment_expression "*puVar3 = &PTR_FUN_0043b368" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b368" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bf90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf90" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bf90" & identifier)) ;) comment (expression_statement "FUN_00320e40(puVar1,0,0);" (call_expression "FUN_00320e40(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ae10;" (assignment_expression "*puVar1 = &PTR_FUN_0043ae10" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ae10" & identifier)) ;) comment (expression_statement "FUN_003124e0(param_1,puVar3);" (call_expression "FUN_003124e0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" { (if_statement "if (param_2 != PTR_DAT_0043da98) {\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_0043da98)" ( (binary_expression "param_2 != PTR_DAT_0043da98" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" { comment (expression_statement "FUN_003194d0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003194d0("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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (expression_statement "FUN_00326fc0(puVar1,0);" (call_expression "FUN_00326fc0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb98;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb98" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb98" & 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_cow_shim(std::locale::id const*) const */\n\n__locale_struct * __thiscall std::locale::facet::_M_cow_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_0043dda8) {\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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_cow_shim(facet *this,id *param_1)" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_cow_shim(facet *this,id *param_1" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_cow_shim(facet *this" (binary_expression "__locale_struct * __thiscall" identifier * identifier) (ERROR "std::locale::facet::_M_cow_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_0043dda8) {\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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0043dda8) {\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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0043dda8) {\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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }" { (if_statement "if (param_1 == (id *)PTR_id_0043dda8) {\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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\n      __facet_shims::__numpunct_fill_cache<char>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dda8)" ( (binary_expression "param_1 == (id *)PTR_id_0043dda8" identifier == (cast_expression "(id *)PTR_id_0043dda8" ( (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_00439298;\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_00438ca0;\n                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)this_00,(__locale_struct *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;\n                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */\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_00439298;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____numpunct_cache_00439298" (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_00439298" & 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_00438ca0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_00438ca0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_00438ca0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_00438ca0" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043abd8;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_0043abd8" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_0043abd8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_0043abd8" & 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_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043de10) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043de10)" ( (binary_expression "param_1 == (id *)PTR_id_0043de10" identifier == (cast_expression "(id *)PTR_id_0043de10" ( (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_00438c30;\n                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\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_00438c30;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_00438c30" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_00438c30" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_00438c30" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac20;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_0043ac20" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_0043ac20" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_0043ac20" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dda0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\n    }\n    else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dda0)" ( (binary_expression "param_1 == (id *)PTR_id_0043dda0" identifier == (cast_expression "(id *)PTR_id_0043dda0" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ebd0;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_00439180;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_00439180" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_00439180" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_00439180" & 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_0042ebd0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_0042ebd0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_0042ebd0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_0042ebd0" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043df98) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\n    }\n    else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043df98)" ( (binary_expression "param_1 == (id *)PTR_id_0043df98" identifier == (cast_expression "(id *)PTR_id_0043df98" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eaa0;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_004390d0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_004390d0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_004390d0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_004390d0" & 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_0042eaa0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_0042eaa0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_0042eaa0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_0042eaa0" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dc50) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\n    }\n    else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dc50)" ( (binary_expression "param_1 == (id *)PTR_id_0043dc50" identifier == (cast_expression "(id *)PTR_id_0043dc50" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ead0;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_00439100;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_00439100" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_00439100" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_00439100" & 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_0042ead0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_0042ead0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_0042ead0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_0042ead0" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043de60) {\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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\n      __facet_shims::__moneypunct_fill_cache<char,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043de60)" ( (binary_expression "param_1 == (id *)PTR_id_0043de60" identifier == (cast_expression "(id *)PTR_id_0043de60" ( (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_00439278;\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_00438e48;\n                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */\n      moneypunct<char,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;\n                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */\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_00439278;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_00439278" (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_00439278" & 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_00438e48;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_00438e48" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_00438e48" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_00438e48" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac58;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0043ac58" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_0043ac58" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_0043ac58" & 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_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dae8) {\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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\n      __facet_shims::__moneypunct_fill_cache<char,false>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dae8)" ( (binary_expression "param_1 == (id *)PTR_id_0043dae8" identifier == (cast_expression "(id *)PTR_id_0043dae8" ( (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_00439258;\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_00438eb0;\n                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */\n      moneypunct<char,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;\n                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */\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_00439258;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_00439258" (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_00439258" & 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_00438eb0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_00438eb0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_00438eb0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_00438eb0" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043acc0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0043acc0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_0043acc0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_0043acc0" & 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_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dd80) {\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dd80)" ( (binary_expression "param_1 == (id *)PTR_id_0043dd80" identifier == (cast_expression "(id *)PTR_id_0043dd80" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      this_00 = (__locale_struct *)operator_new(0x28);\n                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */\n      messages<char>::messages((messages<char> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb00;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_0042eb00" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_0042eb00" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_0042eb00" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043de78) {\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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\n      __facet_shims::__numpunct_fill_cache<wchar_t>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043de78)" ( (binary_expression "param_1 == (id *)PTR_id_0043de78" identifier == (cast_expression "(id *)PTR_id_0043de78" ( (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_0043b2f8;\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_0043bd80;\n                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */\n      numpunct<wchar_t>::_M_initialize_numpunct((numpunct<wchar_t> *)this_00,(__locale_struct *)0x0)\n      ;\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;\n                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */\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_0043b2f8;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____numpunct_cache_0043b2f8" (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_0043b2f8" & 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_0043bd80;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_0043bd80" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_0043bd80" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_0043bd80" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad28;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__numpunct_shim_0043ad28" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_0043ad28" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_0043ad28" & 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_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dac0) {\n      this_00 = (__locale_struct *)operator_new(0x20);\n      *(undefined4 *)(this_00->__locales + 1) = 0;\n      this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dac0)" ( (binary_expression "param_1 == (id *)PTR_id_0043dac0" identifier == (cast_expression "(id *)PTR_id_0043dac0" ( (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_0043bc90;\n                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */\n      p_Var2 = (__locale_data *)_S_get_c_locale();\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\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_0043bc90;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_0043bc90" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_0043bc90" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_0043bc90" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad70;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__collate_shim_0043ad70" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_0043ad70" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_0043ad70" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dfa8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\n    }\n    else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dfa8)" ( (binary_expression "param_1 == (id *)PTR_id_0043dfa8" identifier == (cast_expression "(id *)PTR_id_0043dfa8" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042ec20;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043c260;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_0043c260" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_0043c260" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_0043c260" & 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_0042ec20;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__time_get_shim_0042ec20" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_0042ec20" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_0042ec20" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dec8) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\n    }\n    else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dec8)" ( (binary_expression "param_1 == (id *)PTR_id_0043dec8" identifier == (cast_expression "(id *)PTR_id_0043dec8" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb38;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043c1b0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_0043c1b0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_0043c1b0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_0043c1b0" & 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_0042eb38;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_get_shim_0042eb38" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_0042eb38" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_0042eb38" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dfa0) {\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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\n    }\n    else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dfa0)" ( (binary_expression "param_1 == (id *)PTR_id_0043dfa0" identifier == (cast_expression "(id *)PTR_id_0043dfa0" ( (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_0043dee8 == (undefined *)0x0;\n      this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0;\n      if (bVar3) {\n        *(int *)(this + 8) = *(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_0042eb68;\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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043c1e0;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_0043c1e0" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_0043c1e0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_0043c1e0" & 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_0042eb68;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__money_put_shim_0042eb68" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_0042eb68" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_0042eb68" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043db78) {\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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,true>(this,p_Var2);\n    }\n    else if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043db78)" ( (binary_expression "param_1 == (id *)PTR_id_0043db78" identifier == (cast_expression "(id *)PTR_id_0043db78" ( (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_0043b348;\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_0043bf28;\n                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */\n      moneypunct<wchar_t,true>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;\n                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */\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_0043b348;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_0043b348" (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_0043b348" & 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_0043bf28;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_0043bf28" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_0043bf28" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_0043bf28" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ada8;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0043ada8" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_0043ada8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_0043ada8" & 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_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_0043dd08) {\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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\n      __facet_shims::__moneypunct_fill_cache<wchar_t,false>(this,p_Var2);\n    }\n    else {\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_0043dd08)" ( (binary_expression "param_1 == (id *)PTR_id_0043dd08" identifier == (cast_expression "(id *)PTR_id_0043dd08" ( (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_0043b368;\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_0043bf90;\n                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */\n      moneypunct<wchar_t,false>::_M_initialize_moneypunct(this_00,(char *)0x0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;\n                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */\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_0043b368;" (assignment_expression "*(undefined ***)p_Var2 = &PTR____moneypunct_cache_0043b368" (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_0043b368" & 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_0043bf90;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_0043bf90" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_0043bf90" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_0043bf90" & 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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ae10;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0043ae10" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_0043ae10" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_0043ae10" & 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_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (compound_statement "{\n      if (param_1 != (id *)PTR_id_0043da98) {\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 00317d2a to 00317d2e has its CatchHandler @ 00318676 */\n      messages<wchar_t>::messages((messages<wchar_t> *)this_00,0);\n      bVar3 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" { (if_statement "if (param_1 != (id *)PTR_id_0043da98) {\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_0043da98)" ( (binary_expression "param_1 != (id *)PTR_id_0043da98" identifier != (cast_expression "(id *)PTR_id_0043da98" ( (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar3 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb98;" (assignment_expression "this_00->__locales[0] = (__locale_data *)&PTR__messages_shim_0042eb98" (subscript_expression "this_00->__locales[0]" (field_expression "this_00->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_0042eb98" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_0042eb98" & 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_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00317c10(long param_1,undefined *param_2)" * (function_declarator "FUN_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);" (assignment_expression "puVar1 = (undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" identifier = (cast_expression "(undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" identifier (argument_list "(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" ( identifier , (pointer_expression "&PTR_PTR_FUN_00438640" & identifier) , (pointer_expression "&PTR_PTR_FUN_0043a310" & identifier) ))))) ;) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dda8)" ( (binary_expression "param_2 == PTR_DAT_0043dda8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x90)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439298;" (assignment_expression "*puVar3 = &PTR_FUN_00439298" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439298" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438ca0;" (assignment_expression "*puVar1 = &PTR_FUN_00438ca0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438ca0" & identifier)) ;) (expression_statement "FUN_0031f430(puVar1,0);" (call_expression "FUN_0031f430(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043abd8;" (assignment_expression "*puVar1 = &PTR_FUN_0043abd8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043abd8" & identifier)) ;) (expression_statement "FUN_00311a60(param_1,puVar3);" (call_expression "FUN_00311a60(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de10)" ( (binary_expression "param_2 == PTR_DAT_0043de10" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438c30;" (assignment_expression "*puVar1 = &PTR_FUN_00438c30" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438c30" & identifier)) ;) (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" identifier = (call_expression "FUN_002dcf60()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac20;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ac20" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dda0)" ( (binary_expression "param_2 == PTR_DAT_0043dda0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_00439180;" (assignment_expression "*puVar1 = &PTR_FUN_00439180" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00439180" & 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_0042ebd0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ebd0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ebd0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043df98)" ( (binary_expression "param_2 == PTR_DAT_0043df98" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_004390d0;" (assignment_expression "*puVar1 = &PTR_FUN_004390d0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_004390d0" & 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_0042eaa0;" (assignment_expression "*puVar1 = &PTR_FUN_0042eaa0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eaa0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dc50)" ( (binary_expression "param_2 == PTR_DAT_0043dc50" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_00439100;" (assignment_expression "*puVar1 = &PTR_FUN_00439100" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00439100" & 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_0042ead0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ead0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ead0" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de60)" ( (binary_expression "param_2 == PTR_DAT_0043de60" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439278;" (assignment_expression "*puVar3 = &PTR_FUN_00439278" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439278" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438e48;" (assignment_expression "*puVar1 = &PTR_FUN_00438e48" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438e48" & identifier)) ;) (expression_statement "FUN_0031fc50(puVar1,0,0);" (call_expression "FUN_0031fc50(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ac58;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac58" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ac58" & identifier)) ;) (expression_statement "FUN_00311ec0(param_1,puVar3);" (call_expression "FUN_00311ec0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dae8)" ( (binary_expression "param_2 == PTR_DAT_0043dae8" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00439258;" (assignment_expression "*puVar3 = &PTR_FUN_00439258" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_00439258" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_00438eb0;" (assignment_expression "*puVar1 = &PTR_FUN_00438eb0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_00438eb0" & identifier)) ;) (expression_statement "FUN_00320170(puVar1,0,0);" (call_expression "FUN_00320170(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043acc0;" (assignment_expression "*puVar1 = &PTR_FUN_0043acc0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043acc0" & identifier)) ;) (expression_statement "FUN_003120a0(param_1,puVar3);" (call_expression "FUN_003120a0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dd80)" ( (binary_expression "param_2 == PTR_DAT_0043dd80" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "FUN_002ec000(puVar1,0);" (call_expression "FUN_002ec000(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb00;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb00" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb00" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043de78)" ( (binary_expression "param_2 == PTR_DAT_0043de78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x150)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x150)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b2f8;" (assignment_expression "*puVar3 = &PTR_FUN_0043b2f8" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b2f8" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bd80;" (assignment_expression "*puVar1 = &PTR_FUN_0043bd80" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bd80" & identifier)) ;) (expression_statement "FUN_0031f700(puVar1,0);" (call_expression "FUN_0031f700(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad28;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad28" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ad28" & identifier)) ;) (expression_statement "FUN_00311bd0(param_1,puVar3);" (call_expression "FUN_00311bd0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dac0)" ( (binary_expression "param_2 == PTR_DAT_0043dac0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bc90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bc90" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bc90" & identifier)) ;) (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" identifier = (call_expression "FUN_002dcf60()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ad70;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad70" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ad70" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dfa8)" ( (binary_expression "param_2 == PTR_DAT_0043dfa8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c260;" (assignment_expression "*puVar1 = &PTR_FUN_0043c260" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c260" & 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_0042ec20;" (assignment_expression "*puVar1 = &PTR_FUN_0042ec20" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042ec20" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dec8)" ( (binary_expression "param_2 == PTR_DAT_0043dec8" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c1b0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1b0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c1b0" & 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_0042eb38;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb38" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb38" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dfa0)" ( (binary_expression "param_2 == PTR_DAT_0043dfa0" identifier == identifier) )) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }" { (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*puVar1 = &PTR_FUN_0043c1e0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1e0" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043c1e0" & 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_0042eb68;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb68" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb68" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043db78)" ( (binary_expression "param_2 == PTR_DAT_0043db78" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b348;" (assignment_expression "*puVar3 = &PTR_FUN_0043b348" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b348" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bf28;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf28" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bf28" & identifier)) ;) (expression_statement "FUN_00320890(puVar1,0,0);" (call_expression "FUN_00320890(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ada8;" (assignment_expression "*puVar1 = &PTR_FUN_0043ada8" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ada8" & identifier)) ;) (expression_statement "FUN_00312280(param_1,puVar3);" (call_expression "FUN_00312280(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (if_statement "if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_0043dd08)" ( (binary_expression "param_2 == PTR_DAT_0043dd08" identifier == identifier) )) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }" { (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043b368;" (assignment_expression "*puVar3 = &PTR_FUN_0043b368" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_0043b368" & 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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(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_0043bf90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf90" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043bf90" & identifier)) ;) (expression_statement "FUN_00320e40(puVar1,0,0);" (call_expression "FUN_00320e40(puVar1,0,0)" identifier (argument_list "(puVar1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0043ae10;" (assignment_expression "*puVar1 = &PTR_FUN_0043ae10" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0043ae10" & identifier)) ;) (expression_statement "FUN_003124e0(param_1,puVar3);" (call_expression "FUN_003124e0(param_1,puVar3)" identifier (argument_list "(param_1,puVar3)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" { (if_statement "if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_0043da98)" ( (binary_expression "param_2 != PTR_DAT_0043da98" identifier != identifier) )) (compound_statement "{\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" { (expression_statement "FUN_003194d0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003194d0("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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "FUN_00326fc0(puVar1,0);" (call_expression "FUN_00326fc0(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" identifier = (binary_expression "PTR___pthread_key_create_0043dee8 == (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_0042eb98;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb98" (pointer_expression "*puVar1" * identifier) = (pointer_expression "&PTR_FUN_0042eb98" & 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_00317c10(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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }\n  else {\n    puVar1 = (undefined8 *)*puVar1;\n  }\n  return puVar1;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00317c10(long param_1,undefined *param_2)" (* "*") (function_declarator "FUN_00317c10(long param_1,undefined *param_2)" (identifier "FUN_00317c10") (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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);\n  if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);" (assignment_expression "puVar1 = (undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" (identifier "FUN_0031b7b0") (argument_list "(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&PTR_PTR_FUN_00438640" (& "&") (identifier "PTR_PTR_FUN_00438640")) (, ",") (pointer_expression "&PTR_PTR_FUN_0043a310" (& "&") (identifier "PTR_PTR_FUN_0043a310")) () ")"))))) (; ";")) (if_statement "if (puVar1 == (undefined8 *)0x0) {\n    if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\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_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }\n  }" ({ "{") (if_statement "if (param_2 == PTR_DAT_0043dda8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dda8)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dda8" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dda8")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x90);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_00439298;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438ca0;\n                    \n      FUN_0031f430(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043abd8;\n                    \n      FUN_00311a60(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x90);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x90)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x90)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x90)" (identifier "FUN_002d9490") (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_00439298;" (assignment_expression "*puVar3 = &PTR_FUN_00439298" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_00439298" (& "&") (identifier "PTR_FUN_00439298"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_00438ca0;" (assignment_expression "*puVar1 = &PTR_FUN_00438ca0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00438ca0" (& "&") (identifier "PTR_FUN_00438ca0"))) (; ";")) (expression_statement "FUN_0031f430(puVar1,0);" (call_expression "FUN_0031f430(puVar1,0)" (identifier "FUN_0031f430") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043abd8;" (assignment_expression "*puVar1 = &PTR_FUN_0043abd8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043abd8" (& "&") (identifier "PTR_FUN_0043abd8"))) (; ";")) (expression_statement "FUN_00311a60(param_1,puVar3);" (call_expression "FUN_00311a60(param_1,puVar3)" (identifier "FUN_00311a60") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043de10) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }\n    else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043de10)" (( "(") (binary_expression "param_2 == PTR_DAT_0043de10" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043de10")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_00438c30;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x20)" (identifier "FUN_002d9490") (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_00438c30;" (assignment_expression "*puVar1 = &PTR_FUN_00438c30" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00438c30" (& "&") (identifier "PTR_FUN_00438c30"))) (; ";")) (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" (identifier "uVar2") (= "=") (call_expression "FUN_002dcf60()" (identifier "FUN_002dcf60") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ac20;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac20" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ac20" (& "&") (identifier "PTR_FUN_0043ac20"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dda0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }\n    else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dda0)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dda0" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dda0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439180;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ebd0;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_00439180;" (assignment_expression "*puVar1 = &PTR_FUN_00439180" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00439180" (& "&") (identifier "PTR_FUN_00439180"))) (; ";")) (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_0042ebd0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ebd0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042ebd0" (& "&") (identifier "PTR_FUN_0042ebd0"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043df98) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }\n    else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043df98)" (( "(") (binary_expression "param_2 == PTR_DAT_0043df98" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043df98")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_004390d0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eaa0;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_004390d0;" (assignment_expression "*puVar1 = &PTR_FUN_004390d0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_004390d0" (& "&") (identifier "PTR_FUN_004390d0"))) (; ";")) (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_0042eaa0;" (assignment_expression "*puVar1 = &PTR_FUN_0042eaa0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042eaa0" (& "&") (identifier "PTR_FUN_0042eaa0"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dc50) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }\n    else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dc50)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dc50" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dc50")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_00439100;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ead0;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_00439100;" (assignment_expression "*puVar1 = &PTR_FUN_00439100" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00439100" (& "&") (identifier "PTR_FUN_00439100"))) (; ";")) (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_0042ead0;" (assignment_expression "*puVar1 = &PTR_FUN_0042ead0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042ead0" (& "&") (identifier "PTR_FUN_0042ead0"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043de60) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043de60)" (( "(") (binary_expression "param_2 == PTR_DAT_0043de60" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043de60")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      *(undefined2 *)(puVar3 + 4) = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439278;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438e48;\n                    \n      FUN_0031fc50(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ac58;\n                    \n      FUN_00311ec0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x70)" (identifier "FUN_002d9490") (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_00439278;" (assignment_expression "*puVar3 = &PTR_FUN_00439278" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_00439278" (& "&") (identifier "PTR_FUN_00439278"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_00438e48;" (assignment_expression "*puVar1 = &PTR_FUN_00438e48" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00438e48" (& "&") (identifier "PTR_FUN_00438e48"))) (; ";")) (expression_statement "FUN_0031fc50(puVar1,0,0);" (call_expression "FUN_0031fc50(puVar1,0,0)" (identifier "FUN_0031fc50") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ac58;" (assignment_expression "*puVar1 = &PTR_FUN_0043ac58" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ac58" (& "&") (identifier "PTR_FUN_0043ac58"))) (; ";")) (expression_statement "FUN_00311ec0(param_1,puVar3);" (call_expression "FUN_00311ec0(param_1,puVar3)" (identifier "FUN_00311ec0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dae8) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dae8)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dae8" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dae8")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x70);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)((long)puVar3 + 0x22) = 0;\n      *puVar3 = &PTR_FUN_00439258;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_00438eb0;\n                    \n      FUN_00320170(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043acc0;\n                    \n      FUN_003120a0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x70);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x70)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x70)" (identifier "FUN_002d9490") (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_00439258;" (assignment_expression "*puVar3 = &PTR_FUN_00439258" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_00439258" (& "&") (identifier "PTR_FUN_00439258"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_00438eb0;" (assignment_expression "*puVar1 = &PTR_FUN_00438eb0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_00438eb0" (& "&") (identifier "PTR_FUN_00438eb0"))) (; ";")) (expression_statement "FUN_00320170(puVar1,0,0);" (call_expression "FUN_00320170(puVar1,0,0)" (identifier "FUN_00320170") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043acc0;" (assignment_expression "*puVar1 = &PTR_FUN_0043acc0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043acc0" (& "&") (identifier "PTR_FUN_0043acc0"))) (; ";")) (expression_statement "FUN_003120a0(param_1,puVar3);" (call_expression "FUN_003120a0(param_1,puVar3)" (identifier "FUN_003120a0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dd80) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }\n    else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dd80)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dd80" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dd80")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_002ec000(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "FUN_002ec000(puVar1,0);" (call_expression "FUN_002ec000(puVar1,0)" (identifier "FUN_002ec000") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0042eb00;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb00" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042eb00" (& "&") (identifier "PTR_FUN_0042eb00"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043de78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043de78)" (( "(") (binary_expression "param_2 == PTR_DAT_0043de78" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043de78")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0x150);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b2f8;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bd80;\n                    \n      FUN_0031f700(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ad28;\n                    \n      FUN_00311bd0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0x150);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0x150)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x150)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x150)" (identifier "FUN_002d9490") (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_0043b2f8;" (assignment_expression "*puVar3 = &PTR_FUN_0043b2f8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_0043b2f8" (& "&") (identifier "PTR_FUN_0043b2f8"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_0043bd80;" (assignment_expression "*puVar1 = &PTR_FUN_0043bd80" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043bd80" (& "&") (identifier "PTR_FUN_0043bd80"))) (; ";")) (expression_statement "FUN_0031f700(puVar1,0);" (call_expression "FUN_0031f700(puVar1,0)" (identifier "FUN_0031f700") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ad28;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad28" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ad28" (& "&") (identifier "PTR_FUN_0043ad28"))) (; ";")) (expression_statement "FUN_00311bd0(param_1,puVar3);" (call_expression "FUN_00311bd0(param_1,puVar3)" (identifier "FUN_00311bd0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dac0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }\n    else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dac0)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dac0" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dac0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x20);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      *puVar1 = &PTR_FUN_0043bc90;\n                    \n      uVar2 = FUN_002dcf60();\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x20);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x20)" (identifier "FUN_002d9490") (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_0043bc90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bc90" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043bc90" (& "&") (identifier "PTR_FUN_0043bc90"))) (; ";")) (expression_statement "uVar2 = FUN_002dcf60();" (assignment_expression "uVar2 = FUN_002dcf60()" (identifier "uVar2") (= "=") (call_expression "FUN_002dcf60()" (identifier "FUN_002dcf60") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ad70;" (assignment_expression "*puVar1 = &PTR_FUN_0043ad70" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ad70" (& "&") (identifier "PTR_FUN_0043ad70"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dfa8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }\n    else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dfa8)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dfa8" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dfa8")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c260;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042ec20;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_0043c260;" (assignment_expression "*puVar1 = &PTR_FUN_0043c260" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043c260" (& "&") (identifier "PTR_FUN_0043c260"))) (; ";")) (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_0042ec20;" (assignment_expression "*puVar1 = &PTR_FUN_0042ec20" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042ec20" (& "&") (identifier "PTR_FUN_0042ec20"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dec8) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }\n    else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dec8)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dec8" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dec8")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1b0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb38;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_0043c1b0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1b0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043c1b0" (& "&") (identifier "PTR_FUN_0043c1b0"))) (; ";")) (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_0042eb38;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb38" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042eb38" (& "&") (identifier "PTR_FUN_0042eb38"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dfa0) {\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }\n    else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dfa0)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dfa0" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dfa0")) () ")")) (compound_statement "{\n      puVar1 = (undefined8 *)FUN_002d9490(0x18);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = param_1;\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      *puVar1 = &PTR_FUN_0043c1e0;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      *puVar1 = &PTR_FUN_0042eb68;\n    }" ({ "{") (expression_statement "puVar1 = (undefined8 *)FUN_002d9490(0x18);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x18)" (identifier "FUN_002d9490") (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_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*puVar1 = &PTR_FUN_0043c1e0;" (assignment_expression "*puVar1 = &PTR_FUN_0043c1e0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043c1e0" (& "&") (identifier "PTR_FUN_0043c1e0"))) (; ";")) (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_0042eb68;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb68" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042eb68" (& "&") (identifier "PTR_FUN_0042eb68"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043db78) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }\n    else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043db78)" (( "(") (binary_expression "param_2 == PTR_DAT_0043db78" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043db78")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b348;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf28;\n                    \n      FUN_00320890(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ada8;\n                    \n      FUN_00312280(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0xa0)" (identifier "FUN_002d9490") (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_0043b348;" (assignment_expression "*puVar3 = &PTR_FUN_0043b348" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_0043b348" (& "&") (identifier "PTR_FUN_0043b348"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_0043bf28;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf28" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043bf28" (& "&") (identifier "PTR_FUN_0043bf28"))) (; ";")) (expression_statement "FUN_00320890(puVar1,0,0);" (call_expression "FUN_00320890(puVar1,0,0)" (identifier "FUN_00320890") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ada8;" (assignment_expression "*puVar1 = &PTR_FUN_0043ada8" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ada8" (& "&") (identifier "PTR_FUN_0043ada8"))) (; ";")) (expression_statement "FUN_00312280(param_1,puVar3);" (call_expression "FUN_00312280(param_1,puVar3)" (identifier "FUN_00312280") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_0043dd08) {\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }\n    else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_0043dd08)" (( "(") (binary_expression "param_2 == PTR_DAT_0043dd08" (identifier "param_2") (== "==") (identifier "PTR_DAT_0043dd08")) () ")")) (compound_statement "{\n      puVar3 = (undefined8 *)FUN_002d9490(0xa0);\n      *(undefined4 *)(puVar3 + 1) = 0;\n      puVar3[2] = 0;\n      *(undefined1 *)(puVar3 + 4) = 0;\n      *puVar3 = &PTR_FUN_0043b368;\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_002d9490(0x28);\n      *(undefined4 *)(puVar1 + 1) = 0;\n      puVar1[2] = puVar3;\n      *puVar1 = &PTR_FUN_0043bf90;\n                    \n      FUN_00320e40(puVar1,0,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;\n      puVar1[3] = param_1;\n      if (bVar4) {\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;\n        UNLOCK();\n      }\n      puVar1[4] = puVar3;\n      *puVar1 = &PTR_FUN_0043ae10;\n                    \n      FUN_003124e0(param_1,puVar3);\n    }" ({ "{") (expression_statement "puVar3 = (undefined8 *)FUN_002d9490(0xa0);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d9490(0xa0)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0xa0)" (identifier "FUN_002d9490") (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_0043b368;" (assignment_expression "*puVar3 = &PTR_FUN_0043b368" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_0043b368" (& "&") (identifier "PTR_FUN_0043b368"))) (; ";")) (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (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_0043bf90;" (assignment_expression "*puVar1 = &PTR_FUN_0043bf90" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043bf90" (& "&") (identifier "PTR_FUN_0043bf90"))) (; ";")) (expression_statement "FUN_00320e40(puVar1,0,0);" (call_expression "FUN_00320e40(puVar1,0,0)" (identifier "FUN_00320e40") (argument_list "(puVar1,0,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0043ae10;" (assignment_expression "*puVar1 = &PTR_FUN_0043ae10" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0043ae10" (& "&") (identifier "PTR_FUN_0043ae10"))) (; ";")) (expression_statement "FUN_003124e0(param_1,puVar3);" (call_expression "FUN_003124e0(param_1,puVar3)" (identifier "FUN_003124e0") (argument_list "(param_1,puVar3)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" (else "else") (compound_statement "{\n      if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }\n      puVar1 = (undefined8 *)FUN_002d9490(0x28);\n                    \n      FUN_00326fc0(puVar1,0);\n      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;\n    }" ({ "{") (if_statement "if (param_2 != PTR_DAT_0043da98) {\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" (if "if") (parenthesized_expression "(param_2 != PTR_DAT_0043da98)" (( "(") (binary_expression "param_2 != PTR_DAT_0043da98" (identifier "param_2") (!= "!=") (identifier "PTR_DAT_0043da98")) () ")")) (compound_statement "{\n                    \n        FUN_003194d0("cannot create shim for unknown locale::facet");\n      }" ({ "{") (expression_statement "FUN_003194d0("cannot create shim for unknown locale::facet");" (call_expression "FUN_003194d0("cannot create shim for unknown locale::facet")" (identifier "FUN_003194d0") (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_002d9490(0x28);" (assignment_expression "puVar1 = (undefined8 *)FUN_002d9490(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "FUN_00326fc0(puVar1,0);" (call_expression "FUN_00326fc0(puVar1,0)" (identifier "FUN_00326fc0") (argument_list "(puVar1,0)" (( "(") (identifier "puVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;" (assignment_expression "bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "bVar4") (= "=") (binary_expression "PTR___pthread_key_create_0043dee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043dee8") (== "==") (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_0042eb98;" (assignment_expression "*puVar1 = &PTR_FUN_0042eb98" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "&PTR_FUN_0042eb98" (& "&") (identifier "PTR_FUN_0042eb98"))) (; ";")) (} "}")))))))))))))))))))))))))))))))) (} "}")) (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_cow_shim(std::locale::id const*) const */

type_2 * __thiscall std::locale::facet::_M_cow_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_0043dda8) {
      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_00439298;
      *(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_00438ca0;
                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */
      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_0043abd8;
                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */
      __facet_shims::var_13<var_7>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_0043de10) {
      this_00 = (type_2 *)var_4(0x20);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (type_3 *)&PTR__collate_00438c30;
                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */
      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_0043ac20;
    }
    else if (var_3 == (type_4 *)PTR_id_0043dda0) {
      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_00439180;
      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_0042ebd0;
    }
    else if (var_3 == (type_4 *)PTR_id_0043df98) {
      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_004390d0;
      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_0042eaa0;
    }
    else if (var_3 == (type_4 *)PTR_id_0043dc50) {
      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_00439100;
      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_0042ead0;
    }
    else if (var_3 == (type_4 *)PTR_id_0043de60) {
      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_00439278;
      *(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_00438e48;
                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */
      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_0043ac58;
                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */
      __facet_shims::var_17<var_7,true>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_0043dae8) {
      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_00439258;
      *(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_00438eb0;
                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */
      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_0043acc0;
                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */
      __facet_shims::var_17<var_7,false>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_0043dd80) {
      this_00 = (type_2 *)var_4(0x28);
                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */
      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_0042eb00;
    }
    else if (var_3 == (type_4 *)PTR_id_0043de78) {
      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_0043b2f8;
      *(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_0043bd80;
                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */
      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_0043ad28;
                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */
      __facet_shims::var_13<var_19>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_0043dac0) {
      this_00 = (type_2 *)var_4(0x20);
      *(type_5 *)(this_00->__locales + 1) = 0;
      this_00->__locales[0] = (type_3 *)&PTR__collate_0043bc90;
                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */
      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_0043ad70;
    }
    else if (var_3 == (type_4 *)PTR_id_0043dfa8) {
      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_0043c260;
      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_0042ec20;
    }
    else if (var_3 == (type_4 *)PTR_id_0043dec8) {
      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_0043c1b0;
      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_0042eb38;
    }
    else if (var_3 == (type_4 *)PTR_id_0043dfa0) {
      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_0043c1e0;
      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_0042eb68;
    }
    else if (var_3 == (type_4 *)PTR_id_0043db78) {
      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_0043b348;
      *(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_0043bf28;
                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */
      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_0043ada8;
                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */
      __facet_shims::var_17<var_19,true>(var_10,var_5);
    }
    else if (var_3 == (type_4 *)PTR_id_0043dd08) {
      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_0043b368;
      *(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_0043bf90;
                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */
      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_0043ae10;
                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */
      __facet_shims::var_17<var_19,false>(var_10,var_5);
    }
    else {
      if (var_3 != (type_4 *)PTR_id_0043da98) {
                    /* WARNING: Subroutine does not return */
        var_20("cannot create shim for unknown locale::facet");
      }
      this_00 = (type_2 *)var_4(0x28);
                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */
      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_0042eb98;
    }
  }
  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_0031b7b0(param_1,&PTR_PTR_FUN_00438640,&PTR_PTR_FUN_0043a310);
  if (puVar1 == (undefined8 *)0x0) {
    if (param_2 == PTR_DAT_0043dda8) {
      puVar3 = (undefined8 *)FUN_002d9490(0x90);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_00439298;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438ca0;
                    /* try { // try from 00317df3 to 00317df7 has its CatchHandler @ 0031866e */
      FUN_0031f430(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043abd8;
                    /* try { // try from 00317e1f to 00317e23 has its CatchHandler @ 003186ce */
      FUN_00311a60(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043de10) {
      puVar1 = (undefined8 *)FUN_002d9490(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_00438c30;
                    /* try { // try from 00317f02 to 00317f06 has its CatchHandler @ 003186c6 */
      uVar2 = FUN_002dcf60();
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac20;
    }
    else if (param_2 == PTR_DAT_0043dda0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_00439180;
      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_0042ebd0;
    }
    else if (param_2 == PTR_DAT_0043df98) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_004390d0;
      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_0042eaa0;
    }
    else if (param_2 == PTR_DAT_0043dc50) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_00439100;
      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_0042ead0;
    }
    else if (param_2 == PTR_DAT_0043de60) {
      puVar3 = (undefined8 *)FUN_002d9490(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      *(undefined2 *)(puVar3 + 4) = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_00439278;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438e48;
                    /* try { // try from 0031809e to 003180a2 has its CatchHandler @ 0031869e */
      FUN_0031fc50(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ac58;
                    /* try { // try from 003180ce to 003180d2 has its CatchHandler @ 003186d6 */
      FUN_00311ec0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dae8) {
      puVar3 = (undefined8 *)FUN_002d9490(0x70);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)((long)puVar3 + 0x22) = 0;
      *puVar3 = &PTR_FUN_00439258;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_00438eb0;
                    /* try { // try from 003181ae to 003181b2 has its CatchHandler @ 00318666 */
      FUN_00320170(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043acc0;
                    /* try { // try from 003181de to 003181e2 has its CatchHandler @ 003186be */
      FUN_003120a0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dd80) {
      puVar1 = (undefined8 *)FUN_002d9490(0x28);
                    /* try { // try from 00318212 to 00318216 has its CatchHandler @ 003186ae */
      FUN_002ec000(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb00;
    }
    else if (param_2 == PTR_DAT_0043de78) {
      puVar3 = (undefined8 *)FUN_002d9490(0x150);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b2f8;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bd80;
                    /* try { // try from 003182ec to 003182f0 has its CatchHandler @ 0031867e */
      FUN_0031f700(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad28;
                    /* try { // try from 0031831c to 00318320 has its CatchHandler @ 003186a6 */
      FUN_00311bd0(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dac0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x20);
      *(undefined4 *)(puVar1 + 1) = 0;
      *puVar1 = &PTR_FUN_0043bc90;
                    /* try { // try from 00317ea8 to 00317eac has its CatchHandler @ 0031868e */
      uVar2 = FUN_002dcf60();
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ad70;
    }
    else if (param_2 == PTR_DAT_0043dfa8) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c260;
      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_0042ec20;
    }
    else if (param_2 == PTR_DAT_0043dec8) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c1b0;
      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_0042eb38;
    }
    else if (param_2 == PTR_DAT_0043dfa0) {
      puVar1 = (undefined8 *)FUN_002d9490(0x18);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = param_1;
      bVar4 = PTR___pthread_key_create_0043dee8 == (undefined *)0x0;
      *puVar1 = &PTR_FUN_0043c1e0;
      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_0042eb68;
    }
    else if (param_2 == PTR_DAT_0043db78) {
      puVar3 = (undefined8 *)FUN_002d9490(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b348;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bf28;
                    /* try { // try from 003184ed to 003184f1 has its CatchHandler @ 00318686 */
      FUN_00320890(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ada8;
                    /* try { // try from 0031851d to 00318521 has its CatchHandler @ 00318696 */
      FUN_00312280(param_1,puVar3);
    }
    else if (param_2 == PTR_DAT_0043dd08) {
      puVar3 = (undefined8 *)FUN_002d9490(0xa0);
      *(undefined4 *)(puVar3 + 1) = 0;
      puVar3[2] = 0;
      *(undefined1 *)(puVar3 + 4) = 0;
      *puVar3 = &PTR_FUN_0043b368;
      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_002d9490(0x28);
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = puVar3;
      *puVar1 = &PTR_FUN_0043bf90;
                    /* try { // try from 003185fb to 003185ff has its CatchHandler @ 0031865e */
      FUN_00320e40(puVar1,0,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0043ae10;
                    /* try { // try from 00318627 to 0031862b has its CatchHandler @ 003186b6 */
      FUN_003124e0(param_1,puVar3);
    }
    else {
      if (param_2 != PTR_DAT_0043da98) {
                    /* WARNING: Subroutine does not return */
        FUN_003194d0("cannot create shim for unknown locale::facet");
      }
      puVar1 = (undefined8 *)FUN_002d9490(0x28);
                    /* try { // try from 00317d2a to 00317d2e has its CatchHandler @ 00318676 */
      FUN_00326fc0(puVar1,0);
      bVar4 = PTR___pthread_key_create_0043dee8 == (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_0042eb98;
    }
  }
  else {
    puVar1 = (undefined8 *)*puVar1;
  }
  return puVar1;
}

