
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */

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

{
  undefined *puVar1;
  undefined4 *puVar2;
  __locale_struct *p_Var3;
  __locale_data *p_Var4;
  
  puVar2 = (undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);
  if (puVar2 == (undefined4 *)0x0) {
    if (param_1 == (id *)PTR_id_00413f14) {
      p_Var4 = (__locale_data *)operator_new(0x68);
      *(undefined4 *)(p_Var4 + 4) = 0;
      *(undefined4 *)(p_Var4 + 8) = 0;
      *(undefined4 *)(p_Var4 + 0xc) = 0;
      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;
      p_Var4[0x10] = (__locale_data)0x0;
      *(undefined4 *)(p_Var4 + 0x14) = 0;
      *(undefined4 *)(p_Var4 + 0x18) = 0;
      *(undefined4 *)(p_Var4 + 0x1c) = 0;
      *(undefined4 *)(p_Var4 + 0x20) = 0;
      *(undefined2 *)(p_Var4 + 0x24) = 0;
      p_Var4[100] = (__locale_data)0x0;
      p_Var3 = (__locale_struct *)operator_new(0x14);
      p_Var3->__locales[1] = (__locale_data *)0x0;
      p_Var3->__locales[2] = p_Var4;
      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;
                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */
      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);
      p_Var3->__locales[3] = (__locale_data *)this;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
        UNLOCK();
      }
      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;
      p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */
      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);
      return p_Var3;
    }
    if (param_1 == (id *)PTR_id_00413f3c) {
      p_Var3 = (__locale_struct *)operator_new(0x10);
      p_Var3->__locales[1] = (__locale_data *)0x0;
      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;
                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */
      p_Var4 = (__locale_data *)_S_get_c_locale();
      p_Var3->__locales[2] = p_Var4;
      p_Var3->__locales[3] = (__locale_data *)this;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
        UNLOCK();
      }
      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;
    }
    else if (param_1 == (id *)PTR_id_00413d24) {
      p_Var3 = (__locale_struct *)operator_new(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      p_Var3->__locales[1] = (__locale_data *)0x0;
      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;
      p_Var3->__locales[2] = (__locale_data *)this;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
        UNLOCK();
      }
      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;
    }
    else if (param_1 == (id *)PTR_id_00413bc8) {
      p_Var3 = (__locale_struct *)operator_new(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      p_Var3->__locales[1] = (__locale_data *)0x0;
      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;
      p_Var3->__locales[2] = (__locale_data *)this;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
        UNLOCK();
      }
      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;
    }
    else {
      if (param_1 != (id *)PTR_id_00413e4c) {
        if (param_1 == (id *)PTR_id_00413bb4) {
          p_Var4 = (__locale_data *)operator_new(0x44);
          *(undefined4 *)(p_Var4 + 4) = 0;
          *(undefined4 *)(p_Var4 + 8) = 0;
          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;
          *(undefined4 *)(p_Var4 + 0xc) = 0;
          *(undefined2 *)(p_Var4 + 0x10) = 0;
          p_Var4[0x12] = (__locale_data)0x0;
          *(undefined4 *)(p_Var4 + 0x14) = 0;
          *(undefined4 *)(p_Var4 + 0x18) = 0;
          *(undefined4 *)(p_Var4 + 0x1c) = 0;
          *(undefined4 *)(p_Var4 + 0x20) = 0;
          *(undefined4 *)(p_Var4 + 0x24) = 0;
          *(undefined4 *)(p_Var4 + 0x28) = 0;
          *(undefined4 *)(p_Var4 + 0x2c) = 0;
          *(undefined4 *)(p_Var4 + 0x30) = 0;
          *(undefined4 *)(p_Var4 + 0x34) = 0;
          p_Var4[0x43] = (__locale_data)0x0;
          p_Var3 = (__locale_struct *)operator_new(0x14);
          p_Var3->__locales[1] = (__locale_data *)0x0;
          p_Var3->__locales[2] = p_Var4;
          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;
                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */
          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);
          p_Var3->__locales[3] = (__locale_data *)this;
          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
            *(int *)(this + 4) = *(int *)(this + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(this + 4) = *(int *)(this + 4) + 1;
            UNLOCK();
          }
          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;
          p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */
          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);
        }
        else {
          if (param_1 != (id *)PTR_id_00413e9c) {
            if (param_1 == (id *)PTR_id_00413c90) {
              p_Var3 = (__locale_struct *)operator_new(0x14);
                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */
              messages<char>::messages((messages<char> *)p_Var3,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              p_Var3->__locales[4] = (__locale_data *)this;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413e34) {
              p_Var4 = (__locale_data *)operator_new(0x128);
              *(undefined4 *)(p_Var4 + 4) = 0;
              *(undefined4 *)(p_Var4 + 8) = 0;
              *(undefined4 *)(p_Var4 + 0xc) = 0;
              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;
              p_Var4[0x10] = (__locale_data)0x0;
              *(undefined4 *)(p_Var4 + 0x14) = 0;
              *(undefined4 *)(p_Var4 + 0x18) = 0;
              *(undefined4 *)(p_Var4 + 0x1c) = 0;
              *(undefined4 *)(p_Var4 + 0x20) = 0;
              *(undefined4 *)(p_Var4 + 0x24) = 0;
              *(undefined4 *)(p_Var4 + 0x28) = 0;
              p_Var4[0x124] = (__locale_data)0x0;
              p_Var3 = (__locale_struct *)operator_new(0x14);
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[2] = p_Var4;
              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;
                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */
              numpunct<wchar_t>::_M_initialize_numpunct
                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);
              p_Var3->__locales[3] = (__locale_data *)this;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;
              p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */
              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413e58) {
              p_Var3 = (__locale_struct *)operator_new(0x10);
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;
                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */
              p_Var4 = (__locale_data *)_S_get_c_locale();
              p_Var3->__locales[2] = p_Var4;
              p_Var3->__locales[3] = (__locale_data *)this;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413c08) {
              p_Var3 = (__locale_struct *)operator_new(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;
              p_Var3->__locales[2] = (__locale_data *)this;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413eb8) {
              p_Var3 = (__locale_struct *)operator_new(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;
              p_Var3->__locales[2] = (__locale_data *)this;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413fb4) {
              p_Var3 = (__locale_struct *)operator_new(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;
              p_Var3->__locales[2] = (__locale_data *)this;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413dd4) {
              p_Var4 = (__locale_data *)operator_new(0x70);
              *(undefined4 *)(p_Var4 + 4) = 0;
              *(undefined4 *)(p_Var4 + 8) = 0;
              *(undefined4 *)(p_Var4 + 0xc) = 0;
              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;
              p_Var4[0x10] = (__locale_data)0x0;
              *(undefined4 *)(p_Var4 + 0x14) = 0;
              *(undefined4 *)(p_Var4 + 0x18) = 0;
              *(undefined4 *)(p_Var4 + 0x1c) = 0;
              *(undefined4 *)(p_Var4 + 0x20) = 0;
              *(undefined4 *)(p_Var4 + 0x24) = 0;
              *(undefined4 *)(p_Var4 + 0x28) = 0;
              *(undefined4 *)(p_Var4 + 0x2c) = 0;
              *(undefined4 *)(p_Var4 + 0x30) = 0;
              *(undefined4 *)(p_Var4 + 0x34) = 0;
              *(undefined4 *)(p_Var4 + 0x38) = 0;
              *(undefined4 *)(p_Var4 + 0x3c) = 0;
              p_Var4[0x6c] = (__locale_data)0x0;
              p_Var3 = (__locale_struct *)operator_new(0x14);
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[2] = p_Var4;
              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;
                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */
              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);
              p_Var3->__locales[3] = (__locale_data *)this;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;
              p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */
              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413ef0) {
              p_Var4 = (__locale_data *)operator_new(0x70);
              *(undefined4 *)(p_Var4 + 4) = 0;
              *(undefined4 *)(p_Var4 + 8) = 0;
              *(undefined4 *)(p_Var4 + 0xc) = 0;
              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;
              p_Var4[0x10] = (__locale_data)0x0;
              *(undefined4 *)(p_Var4 + 0x14) = 0;
              *(undefined4 *)(p_Var4 + 0x18) = 0;
              *(undefined4 *)(p_Var4 + 0x1c) = 0;
              *(undefined4 *)(p_Var4 + 0x20) = 0;
              *(undefined4 *)(p_Var4 + 0x24) = 0;
              *(undefined4 *)(p_Var4 + 0x28) = 0;
              *(undefined4 *)(p_Var4 + 0x2c) = 0;
              *(undefined4 *)(p_Var4 + 0x30) = 0;
              *(undefined4 *)(p_Var4 + 0x34) = 0;
              *(undefined4 *)(p_Var4 + 0x38) = 0;
              *(undefined4 *)(p_Var4 + 0x3c) = 0;
              p_Var4[0x6c] = (__locale_data)0x0;
              p_Var3 = (__locale_struct *)operator_new(0x14);
              p_Var3->__locales[1] = (__locale_data *)0x0;
              p_Var3->__locales[2] = p_Var4;
              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;
                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */
              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);
              p_Var3->__locales[3] = (__locale_data *)this;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;
              p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */
              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);
              return p_Var3;
            }
            if (param_1 == (id *)PTR_id_00413df4) {
              p_Var3 = (__locale_struct *)operator_new(0x14);
                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */
              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              p_Var3->__locales[4] = (__locale_data *)this;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(this + 4) = *(int *)(this + 4) + 1;
                UNLOCK();
              }
              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;
              return p_Var3;
            }
                    /* WARNING: Subroutine does not return */
            __throw_logic_error("cannot create shim for unknown locale::facet");
          }
          p_Var4 = (__locale_data *)operator_new(0x44);
          *(undefined2 *)(p_Var4 + 0x10) = 0;
          *(undefined4 *)(p_Var4 + 4) = 0;
          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;
          *(undefined4 *)(p_Var4 + 8) = 0;
          *(undefined4 *)(p_Var4 + 0xc) = 0;
          p_Var4[0x12] = (__locale_data)0x0;
          *(undefined4 *)(p_Var4 + 0x14) = 0;
          *(undefined4 *)(p_Var4 + 0x18) = 0;
          *(undefined4 *)(p_Var4 + 0x1c) = 0;
          *(undefined4 *)(p_Var4 + 0x20) = 0;
          *(undefined4 *)(p_Var4 + 0x24) = 0;
          *(undefined4 *)(p_Var4 + 0x28) = 0;
          *(undefined4 *)(p_Var4 + 0x2c) = 0;
          *(undefined4 *)(p_Var4 + 0x30) = 0;
          *(undefined4 *)(p_Var4 + 0x34) = 0;
          p_Var4[0x43] = (__locale_data)0x0;
          p_Var3 = (__locale_struct *)operator_new(0x14);
          p_Var3->__locales[1] = (__locale_data *)0x0;
          p_Var3->__locales[2] = p_Var4;
          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;
                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */
          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);
          puVar1 = PTR___pthread_key_create_00413ff8;
          p_Var3->__locales[3] = (__locale_data *)this;
          if (puVar1 == (undefined *)0x0) {
            *(int *)(this + 4) = *(int *)(this + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(this + 4) = *(int *)(this + 4) + 1;
            UNLOCK();
          }
          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;
          p_Var3->__locales[4] = p_Var4;
                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */
          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);
        }
        return p_Var3;
      }
      p_Var3 = (__locale_struct *)operator_new(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      p_Var3->__locales[1] = (__locale_data *)0x0;
      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;
      p_Var3->__locales[2] = (__locale_data *)this;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(this + 4) = *(int *)(this + 4) + 1;
        UNLOCK();
      }
      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;
    }
  }
  else {
    p_Var3 = (__locale_struct *)*puVar2;
  }
  return p_Var3;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 * FUN_00286a40(int param_1,undefined *param_2)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);
  if (puVar2 == (undefined4 *)0x0) {
    if (param_2 == PTR_DAT_00413f14) {
      puVar2 = (undefined4 *)FUN_00246670(0x68);
      puVar2[1] = 0;
      puVar2[2] = 0;
      puVar2[3] = 0;
      *puVar2 = &PTR_FUN_004116cc;
      *(undefined1 *)(puVar2 + 4) = 0;
      puVar2[5] = 0;
      puVar2[6] = 0;
      puVar2[7] = 0;
      puVar2[8] = 0;
      *(undefined2 *)(puVar2 + 9) = 0;
      *(undefined1 *)(puVar2 + 0x19) = 0;
      puVar4 = (undefined4 *)FUN_00246670(0x14);
      puVar4[1] = 0;
      puVar4[2] = puVar2;
      *puVar4 = &PTR_FUN_00413584;
                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */
      FUN_00291e90(puVar4,0);
      puVar4[3] = param_1;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar4 = &PTR_FUN_00411f98;
      puVar4[4] = puVar2;
                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */
      FUN_00289dd0(0,param_1,puVar2);
      return puVar4;
    }
    if (param_2 == PTR_DAT_00413f3c) {
      puVar2 = (undefined4 *)FUN_00246670(0x10);
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_0041354c;
                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */
      uVar3 = FUN_0024a700();
      puVar2[2] = uVar3;
      puVar2[3] = param_1;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_00411fbc;
    }
    else if (param_2 == PTR_DAT_00413d24) {
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136e8;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_004120e8;
    }
    else if (param_2 == PTR_DAT_00413bc8) {
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136b8;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_0040a308;
    }
    else {
      if (param_2 != PTR_DAT_00413e4c) {
        if (param_2 == PTR_DAT_00413bb4) {
          puVar2 = (undefined4 *)FUN_00246670(0x44);
          puVar2[1] = 0;
          puVar2[2] = 0;
          *puVar2 = &PTR_FUN_004116bc;
          puVar2[3] = 0;
          *(undefined2 *)(puVar2 + 4) = 0;
          *(undefined1 *)((int)puVar2 + 0x12) = 0;
          puVar2[5] = 0;
          puVar2[6] = 0;
          puVar2[7] = 0;
          puVar2[8] = 0;
          puVar2[9] = 0;
          puVar2[10] = 0;
          puVar2[0xb] = 0;
          puVar2[0xc] = 0;
          puVar2[0xd] = 0;
          *(undefined1 *)((int)puVar2 + 0x43) = 0;
          puVar4 = (undefined4 *)FUN_00246670(0x14);
          puVar4[1] = 0;
          puVar4[2] = puVar2;
          *puVar4 = &PTR_FUN_004135cc;
                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */
          FUN_00292480(puVar4,0,0);
          puVar4[3] = param_1;
          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
            UNLOCK();
          }
          *puVar4 = &PTR_FUN_00411fd8;
          puVar4[4] = puVar2;
                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */
          FUN_0028a5b0(0,param_1,puVar2);
        }
        else {
          if (param_2 != PTR_DAT_00413e9c) {
            if (param_2 == PTR_DAT_00413c90) {
              puVar2 = (undefined4 *)FUN_00246670(0x14);
                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */
              FUN_002c4d10(puVar2,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[4] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a338;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413e34) {
              puVar2 = (undefined4 *)FUN_00246670(0x128);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_0041278c;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              *(undefined1 *)(puVar2 + 0x49) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_0041327c;
                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */
              FUN_002921a0(puVar4,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_00412040;
              puVar4[4] = puVar2;
                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */
              FUN_0028a060(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413e58) {
              puVar2 = (undefined4 *)FUN_00246670(0x10);
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_00413244;
                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */
              uVar3 = FUN_0024a700();
              puVar2[2] = uVar3;
              puVar2[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_00412064;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413c08) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133e0;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_00412114;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413eb8) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133b0;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a354;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413fb4) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133c8;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a36c;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413dd4) {
              puVar2 = (undefined4 *)FUN_00246670(0x70);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_004127b4;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              puVar2[0xb] = 0;
              puVar2[0xc] = 0;
              puVar2[0xd] = 0;
              puVar2[0xe] = 0;
              puVar2[0xf] = 0;
              *(undefined1 *)(puVar2 + 0x1b) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_004132c4;
                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */
              FUN_002931a0(puVar4,0,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_00412080;
              puVar4[4] = puVar2;
                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */
              FUN_0028acb0(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413ef0) {
              puVar2 = (undefined4 *)FUN_00246670(0x70);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_004127c4;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              puVar2[0xb] = 0;
              puVar2[0xc] = 0;
              puVar2[0xd] = 0;
              puVar2[0xe] = 0;
              puVar2[0xf] = 0;
              *(undefined1 *)(puVar2 + 0x1b) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_004132f8;
                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */
              FUN_00293770(puVar4,0,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_004120b4;
              puVar4[4] = puVar2;
                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */
              FUN_0028b0e0(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413df4) {
              puVar2 = (undefined4 *)FUN_00246670(0x14);
                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */
              FUN_002b64f0(puVar2,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[4] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a384;
              return puVar2;
            }
                    /* WARNING: Subroutine does not return */
            FUN_0028db20("cannot create shim for unknown locale::facet");
          }
          puVar2 = (undefined4 *)FUN_00246670(0x44);
          *(undefined2 *)(puVar2 + 4) = 0;
          puVar2[1] = 0;
          *puVar2 = &PTR_FUN_004116ac;
          puVar2[2] = 0;
          puVar2[3] = 0;
          *(undefined1 *)((int)puVar2 + 0x12) = 0;
          puVar2[5] = 0;
          puVar2[6] = 0;
          puVar2[7] = 0;
          puVar2[8] = 0;
          puVar2[9] = 0;
          puVar2[10] = 0;
          puVar2[0xb] = 0;
          puVar2[0xc] = 0;
          puVar2[0xd] = 0;
          *(undefined1 *)((int)puVar2 + 0x43) = 0;
          puVar4 = (undefined4 *)FUN_00246670(0x14);
          puVar4[1] = 0;
          puVar4[2] = puVar2;
          *puVar4 = &PTR_FUN_00413600;
                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */
          FUN_002929c0(puVar4,0,0);
          puVar1 = PTR___pthread_key_create_00413ff8;
          puVar4[3] = param_1;
          if (puVar1 == (undefined *)0x0) {
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
            UNLOCK();
          }
          *puVar4 = &PTR_FUN_0041200c;
          puVar4[4] = puVar2;
                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */
          FUN_0028a930(0,param_1,puVar2);
        }
        return puVar4;
      }
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136d0;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_0040a320;
    }
  }
  else {
    puVar2 = (undefined4 *)*puVar2;
  }
  return puVar2;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x0004d336
ADD ESI,0x18d5b6
PUSH EBX
SUB ESP,0x1c
MOV EDI,dword ptr [EBP + 0xc]
PUSH -0x2
PUSH dword ptr [ESI + 0xffffff2c]
MOV EBX,ESI
PUSH dword ptr [ESI + 0xfffffbac]
PUSH dword ptr [EBP + 0x8]
CALL 0x00290300
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00286a88
MOV EDI,dword ptr [EAX]
LEA ESP,[EBP + -0xc]
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EDI,dword ptr [ESI + 0xffffff14]
JZ 0x00286b90
CMP EDI,dword ptr [ESI + 0xffffff3c]
JZ 0x00286d10
CMP EDI,dword ptr [ESI + 0xfffffd24]
JZ 0x00286c68
CMP EDI,dword ptr [ESI + 0xfffffbc8]
JZ 0x00286d68
CMP EDI,dword ptr [ESI + 0xfffffe4c]
JZ 0x00286db0
CMP EDI,dword ptr [ESI + 0xfffffbb4]
JZ 0x00286e10
CMP EDI,dword ptr [ESI + 0xfffffe9c]
JZ 0x00286f18
CMP EDI,dword ptr [ESI + 0xfffffc90]
JZ 0x00287020
CMP EDI,dword ptr [ESI + 0xfffffe34]
JZ 0x00287070
CMP EDI,dword ptr [ESI + 0xfffffe58]
JZ 0x00286cbc
CMP EDI,dword ptr [ESI + 0xfffffc08]
JZ 0x00287165
CMP EDI,dword ptr [ESI + 0xfffffeb8]
JZ 0x002871b8
CMP EDI,dword ptr [ESI + 0xffffffb4]
JZ 0x0028720b
CMP EDI,dword ptr [ESI + 0xfffffdd4]
JZ 0x0028725e
CMP EDI,dword ptr [ESI + 0xfffffef0]
JZ 0x00287373
CMP EDI,dword ptr [ESI + 0xfffffdf4]
JNZ 0x00287499
SUB ESP,0xc
PUSH 0x14
CALL 0x00246670
POP ECX
MOV EDI,EAX
POP EAX
PUSH 0x0
PUSH EDI
CALL 0x002b64f0
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV dword ptr [EDI + 0x10],EAX
TEST EDX,EDX
JZ 0x00287159
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff6384]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
SUB ESP,0xc
PUSH 0x68
CALL 0x00246670
MOV EDX,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xffffd6c4]
MOV dword ptr [EDX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EDX + 0xc],0x0
MOV dword ptr [EDX],EAX
XOR EAX,EAX
MOV byte ptr [EDX + 0x10],0x0
MOV dword ptr [EDX + 0x14],0x0
MOV dword ptr [EDX + 0x18],0x0
MOV dword ptr [EDX + 0x1c],0x0
MOV dword ptr [EDX + 0x20],0x0
MOV word ptr [EDX + 0x24],AX
MOV byte ptr [EDX + 0x64],0x0
MOV dword ptr [EBP + -0x1c],EDX
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV EDX,dword ptr [EBP + -0x1c]
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff57c]
MOV dword ptr [EDI + 0x8],EDX
ADD EAX,0x8
MOV dword ptr [EDI],EAX
POP EAX
POP EDX
PUSH 0x0
PUSH EDI
CALL 0x00291e90
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x00286cb0
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffdf98]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x00289dd0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV EBX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff6e0]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST EBX,EBX
JZ 0x00286f08
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe0e8]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286c38
SUB ESP,0xc
PUSH 0x10
CALL 0x00246670
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff23c]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
CALL 0x0024a700
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x0028735b
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe064]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
SUB ESP,0xc
PUSH 0x10
CALL 0x00246670
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff544]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
CALL 0x0024a700
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x00286e00
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffdfbc]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV ECX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff6b0]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST ECX,ECX
JZ 0x00287010
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff6308]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV EDX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff6c8]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST EDX,EDX
JZ 0x00287060
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff6320]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286d55
SUB ESP,0xc
PUSH 0x44
CALL 0x00246670
MOV ECX,EAX
LEA EAX,[ESI + 0xffffd6b4]
MOV dword ptr [ECX + 0x4],0x0
ADD EAX,0x8
MOV dword ptr [ECX + 0x8],0x0
MOV dword ptr [ECX],EAX
XOR EAX,EAX
MOV dword ptr [ECX + 0xc],0x0
MOV word ptr [ECX + 0x10],AX
MOV byte ptr [ECX + 0x12],0x0
MOV dword ptr [ECX + 0x14],0x0
MOV dword ptr [ECX + 0x18],0x0
MOV dword ptr [ECX + 0x1c],0x0
MOV dword ptr [ECX + 0x20],0x0
MOV dword ptr [ECX + 0x24],0x0
MOV dword ptr [ECX + 0x28],0x0
MOV dword ptr [ECX + 0x2c],0x0
MOV dword ptr [ECX + 0x30],0x0
MOV dword ptr [ECX + 0x34],0x0
MOV byte ptr [ECX + 0x43],0x0
MOV dword ptr [EBP + -0x1c],ECX
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV ECX,dword ptr [EBP + -0x1c]
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff5c4]
MOV dword ptr [EDI + 0x8],ECX
ADD EAX,0x8
MOV dword ptr [EDI],EAX
PUSH 0x0
PUSH 0x0
PUSH EDI
CALL 0x00292480
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x0028714d
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffdfd8]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x0028a5b0
JMP 0x00286c56
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286ca2
SUB ESP,0xc
XOR EDI,EDI
PUSH 0x44
CALL 0x00246670
MOV ECX,EAX
LEA EAX,[ESI + 0xffffd6a4]
MOV word ptr [ECX + 0x10],DI
ADD EAX,0x8
MOV dword ptr [ECX + 0x4],0x0
MOV dword ptr [ECX],EAX
MOV dword ptr [ECX + 0x8],0x0
MOV dword ptr [ECX + 0xc],0x0
MOV byte ptr [ECX + 0x12],0x0
MOV dword ptr [ECX + 0x14],0x0
MOV dword ptr [ECX + 0x18],0x0
MOV dword ptr [ECX + 0x1c],0x0
MOV dword ptr [ECX + 0x20],0x0
MOV dword ptr [ECX + 0x24],0x0
MOV dword ptr [ECX + 0x28],0x0
MOV dword ptr [ECX + 0x2c],0x0
MOV dword ptr [ECX + 0x30],0x0
MOV dword ptr [ECX + 0x34],0x0
MOV byte ptr [ECX + 0x43],0x0
MOV dword ptr [EBP + -0x1c],ECX
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV ECX,dword ptr [EBP + -0x1c]
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff5f8]
MOV dword ptr [EDI + 0x8],ECX
ADD EAX,0x8
MOV dword ptr [EDI],EAX
PUSH 0x0
PUSH 0x0
PUSH EDI
CALL 0x002929c0
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
TEST ECX,ECX
JZ 0x002871ac
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe00c]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x0028a930
JMP 0x00286c56
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286da2
SUB ESP,0xc
PUSH 0x14
CALL 0x00246670
MOV EDI,EAX
POP EAX
POP EDX
PUSH 0x0
PUSH EDI
CALL 0x002c4d10
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV dword ptr [EDI + 0x10],EAX
TEST ECX,ECX
JZ 0x002871ff
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff6338]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286dea
SUB ESP,0xc
PUSH 0x128
CALL 0x00246670
MOV EBX,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xffffe784]
MOV dword ptr [EBX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EBX + 0xc],0x0
MOV dword ptr [EBX],EAX
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x14],0x0
MOV dword ptr [EBX + 0x18],0x0
MOV dword ptr [EBX + 0x1c],0x0
MOV dword ptr [EBX + 0x20],0x0
MOV dword ptr [EBX + 0x24],0x0
MOV dword ptr [EBX + 0x28],0x0
MOV byte ptr [EBX + 0x124],0x0
MOV dword ptr [EBP + -0x1c],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV EBX,dword ptr [EBP + -0x1c]
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff274]
MOV dword ptr [EDI + 0x8],EBX
MOV EBX,ESI
ADD EAX,0x8
MOV dword ptr [EDI],EAX
POP EAX
POP EDX
PUSH 0x0
PUSH EDI
CALL 0x002921a0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x00287252
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe040]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x0028a060
JMP 0x00286c56
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286ede
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286b7a
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV EBX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff3d8]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST EBX,EBX
JZ 0x00287367
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe114]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286fe6
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV ECX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff3a8]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST ECX,ECX
JZ 0x0028746c
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff6354]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00287052
SUB ESP,0xc
PUSH 0xc
CALL 0x00246670
MOV EDX,dword ptr [ESI + 0xfffffff8]
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xfffff3c0]
ADD EAX,0x8
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x8],EAX
TEST EDX,EDX
JZ 0x00287478
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffff636c]
MOV dword ptr [EDI],EAX
JMP 0x00286a78
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x0028712a
SUB ESP,0xc
PUSH 0x70
CALL 0x00246670
MOV EBX,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xffffe7ac]
MOV dword ptr [EBX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EBX + 0xc],0x0
MOV dword ptr [EBX],EAX
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x14],0x0
MOV dword ptr [EBX + 0x18],0x0
MOV dword ptr [EBX + 0x1c],0x0
MOV dword ptr [EBX + 0x20],0x0
MOV dword ptr [EBX + 0x24],0x0
MOV dword ptr [EBX + 0x28],0x0
MOV dword ptr [EBX + 0x2c],0x0
MOV dword ptr [EBX + 0x30],0x0
MOV dword ptr [EBX + 0x34],0x0
MOV dword ptr [EBX + 0x38],0x0
MOV dword ptr [EBX + 0x3c],0x0
MOV byte ptr [EBX + 0x6c],0x0
MOV dword ptr [EBP + -0x1c],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV EBX,dword ptr [EBP + -0x1c]
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff2bc]
MOV dword ptr [EDI + 0x8],EBX
MOV EBX,ESI
ADD EAX,0x8
MOV dword ptr [EDI],EAX
PUSH 0x0
PUSH 0x0
PUSH EDI
CALL 0x002931a0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x00287484
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe080]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x0028acb0
JMP 0x00286c56
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00286d01
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x0028719f
SUB ESP,0xc
PUSH 0x70
CALL 0x00246670
MOV EBX,EAX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[ESI + 0xffffe7bc]
MOV dword ptr [EBX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EBX + 0xc],0x0
MOV dword ptr [EBX],EAX
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x14],0x0
MOV dword ptr [EBX + 0x18],0x0
MOV dword ptr [EBX + 0x1c],0x0
MOV dword ptr [EBX + 0x20],0x0
MOV dword ptr [EBX + 0x24],0x0
MOV dword ptr [EBX + 0x28],0x0
MOV dword ptr [EBX + 0x2c],0x0
MOV dword ptr [EBX + 0x30],0x0
MOV dword ptr [EBX + 0x34],0x0
MOV dword ptr [EBX + 0x38],0x0
MOV dword ptr [EBX + 0x3c],0x0
MOV byte ptr [EBX + 0x6c],0x0
MOV dword ptr [EBP + -0x1c],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x14
CALL 0x00246670
MOV EBX,dword ptr [EBP + -0x1c]
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV EDI,EAX
LEA EAX,[ESI + 0xfffff2f0]
MOV dword ptr [EDI + 0x8],EBX
MOV EBX,ESI
ADD EAX,0x8
MOV dword ptr [EDI],EAX
PUSH 0x0
PUSH 0x0
PUSH EDI
CALL 0x00293770
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0xfffffff8]
TEST EAX,EAX
JZ 0x00287490
MOV EAX,dword ptr [EBP + 0x8]
ADD.LOCK dword ptr [EAX + 0x4],0x1
LEA EAX,[ESI + 0xffffe0b4]
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + 0x10],EAX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH 0x0
CALL 0x0028b0e0
JMP 0x00286c56
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x002871f2
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00287245
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00287338
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00287449
SUB ESP,0xc
LEA EAX,[ESI + 0xfff02ce0]
PUSH EAX
CALL 0x0028db20
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nundefined4 * FUN_00286a40(int param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}\n\n" comment (function_definition "undefined4 * FUN_00286a40(int param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* FUN_00286a40(int param_1,undefined *param_2)" * (function_declarator "FUN_00286a40(int param_1,undefined *param_2)" identifier (parameter_list "(int param_1,undefined *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);" (assignment_expression "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier = (cast_expression "(undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier (argument_list "(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( identifier , identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413f14)" ( (binary_expression "param_2 == PTR_DAT_00413f14" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x68);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x68)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116cc;" (assignment_expression "*puVar2 = &PTR_FUN_004116cc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116cc" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar2 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 9)" * (cast_expression "(undefined2 *)(puVar2 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 9)" ( (binary_expression "puVar2 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x19) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x19) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x19)" * (cast_expression "(undefined1 *)(puVar2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x19)" ( (binary_expression "puVar2 + 0x19" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_00413584;" (assignment_expression "*puVar4 = &PTR_FUN_00413584" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00413584" & identifier)) ;) comment (expression_statement "FUN_00291e90(puVar4,0);" (call_expression "FUN_00291e90(puVar4,0)" identifier (argument_list "(puVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00411f98;" (assignment_expression "*puVar4 = &PTR_FUN_00411f98" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00411f98" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_00289dd0(0,param_1,puVar2);" (call_expression "FUN_00289dd0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413f3c)" ( (binary_expression "param_2 == PTR_DAT_00413f3c" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_0041354c;" (assignment_expression "*puVar2 = &PTR_FUN_0041354c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0041354c" & identifier)) ;) comment (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" identifier = (call_expression "FUN_0024a700()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00411fbc;" (assignment_expression "*puVar2 = &PTR_FUN_00411fbc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00411fbc" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (if_statement "if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413d24)" ( (binary_expression "param_2 == PTR_DAT_00413d24" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136e8;" (assignment_expression "*puVar2 = &PTR_FUN_004136e8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136e8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_004120e8;" (assignment_expression "*puVar2 = &PTR_FUN_004120e8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004120e8" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (if_statement "if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413bc8)" ( (binary_expression "param_2 == PTR_DAT_00413bc8" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136b8;" (assignment_expression "*puVar2 = &PTR_FUN_004136b8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136b8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a308;" (assignment_expression "*puVar2 = &PTR_FUN_0040a308" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a308" & identifier)) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" { (if_statement "if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_00413e4c)" ( (binary_expression "param_2 != PTR_DAT_00413e4c" identifier != identifier) )) (compound_statement "{\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" { (if_statement "if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }" if (parenthesized_expression "(param_2 == PTR_DAT_00413bb4)" ( (binary_expression "param_2 == PTR_DAT_00413bb4" identifier == identifier) )) (compound_statement "{\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          FUN_0028a5b0(0,param_1,puVar2);\n        }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116bc;" (assignment_expression "*puVar2 = &PTR_FUN_004116bc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116bc" & identifier)) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" * (cast_expression "(undefined2 *)(puVar2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x12)" ( (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x43)" ( (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004135cc;" (assignment_expression "*puVar4 = &PTR_FUN_004135cc" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004135cc" & identifier)) ;) comment (expression_statement "FUN_00292480(puVar4,0,0);" (call_expression "FUN_00292480(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00411fd8;" (assignment_expression "*puVar4 = &PTR_FUN_00411fd8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00411fd8" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0028a5b0(0,param_1,puVar2);" (call_expression "FUN_0028a5b0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }" else (compound_statement "{\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          FUN_0028a930(0,param_1,puVar2);\n        }" { (if_statement "if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" if (parenthesized_expression "(param_2 != PTR_DAT_00413e9c)" ( (binary_expression "param_2 != PTR_DAT_00413e9c" identifier != identifier) )) (compound_statement "{\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    /* WARNING: Subroutine does not return */\n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" { (if_statement "if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413c90)" ( (binary_expression "param_2 == PTR_DAT_00413c90" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) comment (expression_statement "FUN_002c4d10(puVar2,0);" (call_expression "FUN_002c4d10(puVar2,0)" identifier (argument_list "(puVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a338;" (assignment_expression "*puVar2 = &PTR_FUN_0040a338" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a338" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413e34)" ( (binary_expression "param_2 == PTR_DAT_00413e34" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x128);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x128)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x128)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x128)" identifier (argument_list "(0x128)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_0041278c;" (assignment_expression "*puVar2 = &PTR_FUN_0041278c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0041278c" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x49) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x49)" * (cast_expression "(undefined1 *)(puVar2 + 0x49)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x49)" ( (binary_expression "puVar2 + 0x49" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_0041327c;" (assignment_expression "*puVar4 = &PTR_FUN_0041327c" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_0041327c" & identifier)) ;) comment (expression_statement "FUN_002921a0(puVar4,0);" (call_expression "FUN_002921a0(puVar4,0)" identifier (argument_list "(puVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00412040;" (assignment_expression "*puVar4 = &PTR_FUN_00412040" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00412040" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0028a060(0,param_1,puVar2);" (call_expression "FUN_0028a060(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413e58)" ( (binary_expression "param_2 == PTR_DAT_00413e58" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_00413244;" (assignment_expression "*puVar2 = &PTR_FUN_00413244" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00413244" & identifier)) ;) comment (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" identifier = (call_expression "FUN_0024a700()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00412064;" (assignment_expression "*puVar2 = &PTR_FUN_00412064" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00412064" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413c08)" ( (binary_expression "param_2 == PTR_DAT_00413c08" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133e0;" (assignment_expression "*puVar2 = &PTR_FUN_004133e0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133e0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00412114;" (assignment_expression "*puVar2 = &PTR_FUN_00412114" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00412114" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413eb8)" ( (binary_expression "param_2 == PTR_DAT_00413eb8" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133b0;" (assignment_expression "*puVar2 = &PTR_FUN_004133b0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133b0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a354;" (assignment_expression "*puVar2 = &PTR_FUN_0040a354" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a354" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413fb4)" ( (binary_expression "param_2 == PTR_DAT_00413fb4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133c8;" (assignment_expression "*puVar2 = &PTR_FUN_004133c8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133c8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a36c;" (assignment_expression "*puVar2 = &PTR_FUN_0040a36c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a36c" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413dd4)" ( (binary_expression "param_2 == PTR_DAT_00413dd4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004127b4;" (assignment_expression "*puVar2 = &PTR_FUN_004127b4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004127b4" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" * (cast_expression "(undefined1 *)(puVar2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1b)" ( (binary_expression "puVar2 + 0x1b" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004132c4;" (assignment_expression "*puVar4 = &PTR_FUN_004132c4" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004132c4" & identifier)) ;) comment (expression_statement "FUN_002931a0(puVar4,0,0);" (call_expression "FUN_002931a0(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00412080;" (assignment_expression "*puVar4 = &PTR_FUN_00412080" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00412080" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0028acb0(0,param_1,puVar2);" (call_expression "FUN_0028acb0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413ef0)" ( (binary_expression "param_2 == PTR_DAT_00413ef0" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004127c4;" (assignment_expression "*puVar2 = &PTR_FUN_004127c4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004127c4" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" * (cast_expression "(undefined1 *)(puVar2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1b)" ( (binary_expression "puVar2 + 0x1b" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004132f8;" (assignment_expression "*puVar4 = &PTR_FUN_004132f8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004132f8" & identifier)) ;) comment (expression_statement "FUN_00293770(puVar4,0,0);" (call_expression "FUN_00293770(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_004120b4;" (assignment_expression "*puVar4 = &PTR_FUN_004120b4" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004120b4" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0028b0e0(0,param_1,puVar2);" (call_expression "FUN_0028b0e0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413df4)" ( (binary_expression "param_2 == PTR_DAT_00413df4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) comment (expression_statement "FUN_002b64f0(puVar2,0);" (call_expression "FUN_002b64f0(puVar2,0)" identifier (argument_list "(puVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a384;" (assignment_expression "*puVar2 = &PTR_FUN_0040a384" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a384" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) comment (expression_statement "FUN_0028db20("cannot create shim for unknown locale::facet");" (call_expression "FUN_0028db20("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 "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" * (cast_expression "(undefined2 *)(puVar2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116ac;" (assignment_expression "*puVar2 = &PTR_FUN_004116ac" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116ac" & identifier)) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x12)" ( (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x43)" ( (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_00413600;" (assignment_expression "*puVar4 = &PTR_FUN_00413600" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00413600" & identifier)) ;) comment (expression_statement "FUN_002929c0(puVar4,0,0);" (call_expression "FUN_002929c0(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_0041200c;" (assignment_expression "*puVar4 = &PTR_FUN_0041200c" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_0041200c" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0028a930(0,param_1,puVar2);" (call_expression "FUN_0028a930(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) }))) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136d0;" (assignment_expression "*puVar2 = &PTR_FUN_004136d0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136d0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a320;" (assignment_expression "*puVar2 = &PTR_FUN_0040a320" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a320" & identifier)) ;) }))))))) }) (else_clause "else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" else (compound_statement "{\n    puVar2 = (undefined4 *)*puVar2;\n  }" { (expression_statement "puVar2 = (undefined4 *)*puVar2;" (assignment_expression "puVar2 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }))) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */\n\n__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  __locale_struct *p_Var3;\n  __locale_data *p_Var4;\n  \n  puVar2 = (undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_1 == (id *)PTR_id_00413f14) {\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }\n    if (param_1 == (id *)PTR_id_00413f3c) {\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }\n    else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }\n  }\n  else {\n    p_Var3 = (__locale_struct *)*puVar2;\n  }\n  return p_Var3;\n}\n\n" comment comment (ERROR "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1)" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this,id *param_1" (binary_expression "__locale_struct * __thiscall std::locale::facet::_M_sso_shim(facet *this" (binary_expression "__locale_struct * __thiscall" identifier * identifier) (ERROR "std::locale::facet::_M_sso_shim(facet" identifier : : identifier : : identifier : : identifier ( identifier) * identifier) (ERROR ",id" , identifier) * identifier) )) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  __locale_struct *p_Var3;\n  __locale_data *p_Var4;\n  \n  puVar2 = (undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_1 == (id *)PTR_id_00413f14) {\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }\n    if (param_1 == (id *)PTR_id_00413f3c) {\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }\n    else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }\n  }\n  else {\n    p_Var3 = (__locale_struct *)*puVar2;\n  }\n  return p_Var3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "__locale_struct *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "__locale_data *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);" (assignment_expression "puVar2 = (undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier = (cast_expression "(undefined4 *)__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__dynamic_cast(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier (argument_list "(this,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( identifier , identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    if (param_1 == (id *)PTR_id_00413f14) {\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }\n    if (param_1 == (id *)PTR_id_00413f3c) {\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }\n    else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }\n  }\n  else {\n    p_Var3 = (__locale_struct *)*puVar2;\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_1 == (id *)PTR_id_00413f14) {\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }\n    if (param_1 == (id *)PTR_id_00413f3c) {\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }\n    else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }\n  }" { (if_statement "if (param_1 == (id *)PTR_id_00413f14) {\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413f14)" ( (binary_expression "param_1 == (id *)PTR_id_00413f14" identifier == (cast_expression "(id *)PTR_id_00413f14" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var4 = (__locale_data *)operator_new(0x68);\n      *(undefined4 *)(p_Var4 + 4) = 0;\n      *(undefined4 *)(p_Var4 + 8) = 0;\n      *(undefined4 *)(p_Var4 + 0xc) = 0;\n      *(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;\n      p_Var4[0x10] = (__locale_data)0x0;\n      *(undefined4 *)(p_Var4 + 0x14) = 0;\n      *(undefined4 *)(p_Var4 + 0x18) = 0;\n      *(undefined4 *)(p_Var4 + 0x1c) = 0;\n      *(undefined4 *)(p_Var4 + 0x20) = 0;\n      *(undefined2 *)(p_Var4 + 0x24) = 0;\n      p_Var4[100] = (__locale_data)0x0;\n      p_Var3 = (__locale_struct *)operator_new(0x14);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;\n                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */\n      numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;\n      p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */\n      __facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);\n      return p_Var3;\n    }" { (expression_statement "p_Var4 = (__locale_data *)operator_new(0x68);" (assignment_expression "p_Var4 = (__locale_data *)operator_new(0x68)" identifier = (cast_expression "(__locale_data *)operator_new(0x68)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____numpunct_cache_004116cc" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____numpunct_cache_004116cc" & identifier)) ;) (expression_statement "p_Var4[0x10] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x10] = (__locale_data)0x0" (subscript_expression "p_Var4[0x10]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined2 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined2 *)(p_Var4 + 0x24)" * (cast_expression "(undefined2 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[100] = (__locale_data)0x0;" (assignment_expression "p_Var4[100] = (__locale_data)0x0" (subscript_expression "p_Var4[100]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_00413584" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_00413584" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_00413584" & identifier))) ;) comment (expression_statement "numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0);" (binary_expression "numpunct<char>::_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0)" (binary_expression "numpunct<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct((numpunct<char> *)p_Var3,(__locale_struct *)0x0)" identifier (argument_list "((numpunct<char> *)p_Var3,(__locale_struct *)0x0)" ( (parenthesized_expression "(numpunct<char> *)p_Var3,(__locale_struct *)0x0)" ( (comma_expression "numpunct<char> *)p_Var3,(__locale_struct *)0x0" (binary_expression "numpunct<char> *)p_Var3" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*)p_Var3" * (ERROR ")" )) identifier)) , (cast_expression "(__locale_struct *)0x0" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) )))) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00411f98" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_00411f98" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_00411f98" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__numpunct_fill_cache<char>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__numpunct_fill_cache<char>(0,this,p_Var4);" (binary_expression "__numpunct_fill_cache<char>(0,this,p_Var4)" (binary_expression "__numpunct_fill_cache<char" identifier < identifier) > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) ))) ;)) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413f3c) {\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }\n    else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413f3c)" ( (binary_expression "param_1 == (id *)PTR_id_00413f3c" identifier == (cast_expression "(id *)PTR_id_00413f3c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var3 = (__locale_struct *)operator_new(0x10);\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;\n                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */\n      p_Var4 = (__locale_data *)_S_get_c_locale();\n      p_Var3->__locales[2] = p_Var4;\n      p_Var3->__locales[3] = (__locale_data *)this;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;\n    }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x10);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x10)" identifier = (cast_expression "(__locale_struct *)operator_new(0x10)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_0041354c" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_0041354c" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_0041354c" & identifier))) ;) comment (expression_statement "p_Var4 = (__locale_data *)_S_get_c_locale();" (assignment_expression "p_Var4 = (__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 "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00411fbc" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_00411fbc" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_00411fbc" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_00413d24) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }\n    else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413d24)" ( (binary_expression "param_1 == (id *)PTR_id_00413d24" identifier == (cast_expression "(id *)PTR_id_00413d24" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;\n    }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004136e8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_004136e8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_004136e8" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_004120e8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_004120e8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_004120e8" & identifier))) ;) }) (else_clause "else if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" else (if_statement "if (param_1 == (id *)PTR_id_00413bc8) {\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }\n    else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413bc8)" ( (binary_expression "param_1 == (id *)PTR_id_00413bc8" identifier == (cast_expression "(id *)PTR_id_00413bc8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;\n    }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004136b8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_004136b8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_004136b8" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a308" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_0040a308" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_0040a308" & identifier))) ;) }) (else_clause "else {\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" else (compound_statement "{\n      if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }\n      p_Var3 = (__locale_struct *)operator_new(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      p_Var3->__locales[1] = (__locale_data *)0x0;\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;\n      p_Var3->__locales[2] = (__locale_data *)this;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }\n      p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;\n    }" { (if_statement "if (param_1 != (id *)PTR_id_00413e4c) {\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }" if (parenthesized_expression "(param_1 != (id *)PTR_id_00413e4c)" ( (binary_expression "param_1 != (id *)PTR_id_00413e4c" identifier != (cast_expression "(id *)PTR_id_00413e4c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }\n        return p_Var3;\n      }" { (if_statement "if (param_1 == (id *)PTR_id_00413bb4) {\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }\n        else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413bb4)" ( (binary_expression "param_1 == (id *)PTR_id_00413bb4" identifier == (cast_expression "(id *)PTR_id_00413bb4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;\n                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */\n          moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */\n          __facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);\n        }" { (expression_statement "p_Var4 = (__locale_data *)operator_new(0x44);" (assignment_expression "p_Var4 = (__locale_data *)operator_new(0x44)" identifier = (cast_expression "(__locale_data *)operator_new(0x44)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116bc" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004116bc" & identifier)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(p_Var4 + 0x10) = 0;" (assignment_expression "*(undefined2 *)(p_Var4 + 0x10) = 0" (pointer_expression "*(undefined2 *)(p_Var4 + 0x10)" * (cast_expression "(undefined2 *)(p_Var4 + 0x10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x10)" ( (binary_expression "p_Var4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x12] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x12] = (__locale_data)0x0" (subscript_expression "p_Var4[0x12]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x24)" * (cast_expression "(undefined4 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x28) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x28)" * (cast_expression "(undefined4 *)(p_Var4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x28)" ( (binary_expression "p_Var4 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x2c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x2c)" ( (binary_expression "p_Var4 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x30) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x30)" * (cast_expression "(undefined4 *)(p_Var4 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x30)" ( (binary_expression "p_Var4 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x34) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x34)" * (cast_expression "(undefined4 *)(p_Var4 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x34)" ( (binary_expression "p_Var4 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x43] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x43] = (__locale_data)0x0" (subscript_expression "p_Var4[0x43]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004135cc" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004135cc" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004135cc" & identifier))) ;) comment (expression_statement "moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);" (comma_expression "moneypunct<char,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var3,(char *)0x0)" identifier (argument_list "(p_Var3,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00411fd8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_00411fd8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_00411fd8" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<char,true>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<char,true>(0,this,p_Var4);" (comma_expression "__moneypunct_fill_cache<char,true>(0,this,p_Var4)" (binary_expression "__moneypunct_fill_cache<char" identifier < identifier) , (binary_expression "true>(0,this,p_Var4)" true > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) )))) ;)) }) (else_clause "else {\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }" else (compound_statement "{\n          if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }\n          p_Var4 = (__locale_data *)operator_new(0x44);\n          *(undefined2 *)(p_Var4 + 0x10) = 0;\n          *(undefined4 *)(p_Var4 + 4) = 0;\n          *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;\n          *(undefined4 *)(p_Var4 + 8) = 0;\n          *(undefined4 *)(p_Var4 + 0xc) = 0;\n          p_Var4[0x12] = (__locale_data)0x0;\n          *(undefined4 *)(p_Var4 + 0x14) = 0;\n          *(undefined4 *)(p_Var4 + 0x18) = 0;\n          *(undefined4 *)(p_Var4 + 0x1c) = 0;\n          *(undefined4 *)(p_Var4 + 0x20) = 0;\n          *(undefined4 *)(p_Var4 + 0x24) = 0;\n          *(undefined4 *)(p_Var4 + 0x28) = 0;\n          *(undefined4 *)(p_Var4 + 0x2c) = 0;\n          *(undefined4 *)(p_Var4 + 0x30) = 0;\n          *(undefined4 *)(p_Var4 + 0x34) = 0;\n          p_Var4[0x43] = (__locale_data)0x0;\n          p_Var3 = (__locale_struct *)operator_new(0x14);\n          p_Var3->__locales[1] = (__locale_data *)0x0;\n          p_Var3->__locales[2] = p_Var4;\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;\n                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */\n          moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          p_Var3->__locales[3] = (__locale_data *)this;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }\n          p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;\n          p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */\n          __facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);\n        }" { (if_statement "if (param_1 != (id *)PTR_id_00413e9c) {\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\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_00413e9c)" ( (binary_expression "param_1 != (id *)PTR_id_00413e9c" identifier != (cast_expression "(id *)PTR_id_00413e9c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n            if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }\n            if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }\n                    /* WARNING: Subroutine does not return */\n            __throw_logic_error("cannot create shim for unknown locale::facet");\n          }" { (if_statement "if (param_1 == (id *)PTR_id_00413c90) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413c90)" ( (binary_expression "param_1 == (id *)PTR_id_00413c90" identifier == (cast_expression "(id *)PTR_id_00413c90" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */\n              messages<char>::messages((messages<char> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) comment (expression_statement "messages<char>::messages((messages<char> *)p_Var3,0);" (binary_expression "messages<char>::messages((messages<char> *)p_Var3,0)" (binary_expression "messages<char" identifier < identifier) > (ERROR "::" : :) (call_expression "messages((messages<char> *)p_Var3,0)" identifier (argument_list "((messages<char> *)p_Var3,0)" ( (parenthesized_expression "(messages<char> *)p_Var3,0)" ( (comma_expression "messages<char> *)p_Var3,0" (binary_expression "messages<char> *)p_Var3" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "*)p_Var3" * (ERROR ")" )) identifier)) , number_literal) )) )))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[4] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[4] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a338" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_0040a338" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_0040a338" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413e34) {\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413e34)" ( (binary_expression "param_1 == (id *)PTR_id_00413e34" identifier == (cast_expression "(id *)PTR_id_00413e34" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var4 = (__locale_data *)operator_new(0x128);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              p_Var4[0x124] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;\n                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */\n              numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */\n              __facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);\n              return p_Var3;\n            }" { (expression_statement "p_Var4 = (__locale_data *)operator_new(0x128);" (assignment_expression "p_Var4 = (__locale_data *)operator_new(0x128)" identifier = (cast_expression "(__locale_data *)operator_new(0x128)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x128)" identifier (argument_list "(0x128)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(p_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____numpunct_cache_0041278c" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____numpunct_cache_0041278c" & identifier)) ;) (expression_statement "p_Var4[0x10] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x10] = (__locale_data)0x0" (subscript_expression "p_Var4[0x10]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x24)" * (cast_expression "(undefined4 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x28) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x28)" * (cast_expression "(undefined4 *)(p_Var4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x28)" ( (binary_expression "p_Var4 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x124] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x124] = (__locale_data)0x0" (subscript_expression "p_Var4[0x124]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_0041327c" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_0041327c" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_0041327c" & identifier))) ;) comment (expression_statement "numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0);" (binary_expression "numpunct<wchar_t>::_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct\n                        ((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0)" identifier (argument_list "((numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0)" ( (parenthesized_expression "(numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0)" ( (comma_expression "numpunct<wchar_t> *)p_Var3,(__locale_struct *)0x0" (binary_expression "numpunct<wchar_t> *)p_Var3" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "*)p_Var3" * (ERROR ")" )) identifier)) , (cast_expression "(__locale_struct *)0x0" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) )))) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__numpunct_shim_00412040" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__numpunct_shim_00412040" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__numpunct_shim_00412040" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__numpunct_fill_cache<wchar_t>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__numpunct_fill_cache<wchar_t>(0,this,p_Var4);" (binary_expression "__numpunct_fill_cache<wchar_t>(0,this,p_Var4)" (binary_expression "__numpunct_fill_cache<wchar_t" identifier < identifier) > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) ))) ;)) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413e58) {\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413e58)" ( (binary_expression "param_1 == (id *)PTR_id_00413e58" identifier == (cast_expression "(id *)PTR_id_00413e58" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0x10);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;\n                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */\n              p_Var4 = (__locale_data *)_S_get_c_locale();\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x10);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x10)" identifier = (cast_expression "(__locale_struct *)operator_new(0x10)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_00413244" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_00413244" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_00413244" & identifier))) ;) comment (expression_statement "p_Var4 = (__locale_data *)_S_get_c_locale();" (assignment_expression "p_Var4 = (__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 "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__collate_shim_00412064" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__collate_shim_00412064" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__collate_shim_00412064" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413c08) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413c08)" ( (binary_expression "param_1 == (id *)PTR_id_00413c08" identifier == (cast_expression "(id *)PTR_id_00413c08" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_004133e0" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_004133e0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_004133e0" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__time_get_shim_00412114" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__time_get_shim_00412114" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__time_get_shim_00412114" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413eb8) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413eb8)" ( (binary_expression "param_1 == (id *)PTR_id_00413eb8" identifier == (cast_expression "(id *)PTR_id_00413eb8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_004133b0" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_004133b0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_004133b0" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_get_shim_0040a354" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_get_shim_0040a354" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_get_shim_0040a354" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413fb4) {\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413fb4)" ( (binary_expression "param_1 == (id *)PTR_id_00413fb4" identifier == (cast_expression "(id *)PTR_id_00413fb4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;\n              p_Var3->__locales[2] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004133c8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_004133c8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_004133c8" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a36c" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_0040a36c" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_0040a36c" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413dd4) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413dd4)" ( (binary_expression "param_1 == (id *)PTR_id_00413dd4" identifier == (cast_expression "(id *)PTR_id_00413dd4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;\n                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */\n              moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);\n              return p_Var3;\n            }" { (expression_statement "p_Var4 = (__locale_data *)operator_new(0x70);" (assignment_expression "p_Var4 = (__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_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127b4" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004127b4" & identifier)) ;) (expression_statement "p_Var4[0x10] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x10] = (__locale_data)0x0" (subscript_expression "p_Var4[0x10]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x24)" * (cast_expression "(undefined4 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x28) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x28)" * (cast_expression "(undefined4 *)(p_Var4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x28)" ( (binary_expression "p_Var4 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x2c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x2c)" ( (binary_expression "p_Var4 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x30) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x30)" * (cast_expression "(undefined4 *)(p_Var4 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x30)" ( (binary_expression "p_Var4 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x34) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x34)" * (cast_expression "(undefined4 *)(p_Var4 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x34)" ( (binary_expression "p_Var4 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x38) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x38)" * (cast_expression "(undefined4 *)(p_Var4 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x38)" ( (binary_expression "p_Var4 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x3c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x3c)" ( (binary_expression "p_Var4 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x6c] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x6c] = (__locale_data)0x0" (subscript_expression "p_Var4[0x6c]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132c4" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004132c4" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004132c4" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0);" (comma_expression "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var3,(char *)0x0)" identifier (argument_list "(p_Var3,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_00412080" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_00412080" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_00412080" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4);" (comma_expression "__moneypunct_fill_cache<wchar_t,true>(0,this,p_Var4)" (binary_expression "__moneypunct_fill_cache<wchar_t" identifier < identifier) , (binary_expression "true>(0,this,p_Var4)" true > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) )))) ;)) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413ef0) {\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413ef0)" ( (binary_expression "param_1 == (id *)PTR_id_00413ef0" identifier == (cast_expression "(id *)PTR_id_00413ef0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var4 = (__locale_data *)operator_new(0x70);\n              *(undefined4 *)(p_Var4 + 4) = 0;\n              *(undefined4 *)(p_Var4 + 8) = 0;\n              *(undefined4 *)(p_Var4 + 0xc) = 0;\n              *(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;\n              p_Var4[0x10] = (__locale_data)0x0;\n              *(undefined4 *)(p_Var4 + 0x14) = 0;\n              *(undefined4 *)(p_Var4 + 0x18) = 0;\n              *(undefined4 *)(p_Var4 + 0x1c) = 0;\n              *(undefined4 *)(p_Var4 + 0x20) = 0;\n              *(undefined4 *)(p_Var4 + 0x24) = 0;\n              *(undefined4 *)(p_Var4 + 0x28) = 0;\n              *(undefined4 *)(p_Var4 + 0x2c) = 0;\n              *(undefined4 *)(p_Var4 + 0x30) = 0;\n              *(undefined4 *)(p_Var4 + 0x34) = 0;\n              *(undefined4 *)(p_Var4 + 0x38) = 0;\n              *(undefined4 *)(p_Var4 + 0x3c) = 0;\n              p_Var4[0x6c] = (__locale_data)0x0;\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n              p_Var3->__locales[1] = (__locale_data *)0x0;\n              p_Var3->__locales[2] = p_Var4;\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;\n                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */\n              moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);\n              p_Var3->__locales[3] = (__locale_data *)this;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;\n              p_Var3->__locales[4] = p_Var4;\n                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */\n              __facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);\n              return p_Var3;\n            }" { (expression_statement "p_Var4 = (__locale_data *)operator_new(0x70);" (assignment_expression "p_Var4 = (__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_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004127c4" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004127c4" & identifier)) ;) (expression_statement "p_Var4[0x10] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x10] = (__locale_data)0x0" (subscript_expression "p_Var4[0x10]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x24)" * (cast_expression "(undefined4 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x28) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x28)" * (cast_expression "(undefined4 *)(p_Var4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x28)" ( (binary_expression "p_Var4 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x2c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x2c)" ( (binary_expression "p_Var4 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x30) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x30)" * (cast_expression "(undefined4 *)(p_Var4 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x30)" ( (binary_expression "p_Var4 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x34) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x34)" * (cast_expression "(undefined4 *)(p_Var4 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x34)" ( (binary_expression "p_Var4 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x38) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x38)" * (cast_expression "(undefined4 *)(p_Var4 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x38)" ( (binary_expression "p_Var4 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x3c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x3c)" ( (binary_expression "p_Var4 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x6c] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x6c] = (__locale_data)0x0" (subscript_expression "p_Var4[0x6c]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_004132f8" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_004132f8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_004132f8" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);" (comma_expression "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var3,(char *)0x0)" identifier (argument_list "(p_Var3,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_004120b4" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_004120b4" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_004120b4" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4);" (comma_expression "__moneypunct_fill_cache<wchar_t,false>(0,this,p_Var4)" (binary_expression "__moneypunct_fill_cache<wchar_t" identifier < identifier) , (binary_expression "false>(0,this,p_Var4)" false > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) )))) ;)) (return_statement "return p_Var3;" return identifier ;) })) (if_statement "if (param_1 == (id *)PTR_id_00413df4) {\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }" if (parenthesized_expression "(param_1 == (id *)PTR_id_00413df4)" ( (binary_expression "param_1 == (id *)PTR_id_00413df4" identifier == (cast_expression "(id *)PTR_id_00413df4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n              p_Var3 = (__locale_struct *)operator_new(0x14);\n                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */\n              messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              p_Var3->__locales[4] = (__locale_data *)this;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }\n              p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;\n              return p_Var3;\n            }" { (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) comment (expression_statement "messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0);" (binary_expression "messages<wchar_t>::messages((messages<wchar_t> *)p_Var3,0)" (binary_expression "messages<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "messages((messages<wchar_t> *)p_Var3,0)" identifier (argument_list "((messages<wchar_t> *)p_Var3,0)" ( (parenthesized_expression "(messages<wchar_t> *)p_Var3,0)" ( (comma_expression "messages<wchar_t> *)p_Var3,0" (binary_expression "messages<wchar_t> *)p_Var3" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "*)p_Var3" * (ERROR ")" )) identifier)) , number_literal) )) )))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[4] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[4] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n              }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(this + 4) = *(int *)(this + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__messages_shim_0040a384" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__messages_shim_0040a384" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__messages_shim_0040a384" & identifier))) ;) (return_statement "return p_Var3;" return identifier ;) })) 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 "p_Var4 = (__locale_data *)operator_new(0x44);" (assignment_expression "p_Var4 = (__locale_data *)operator_new(0x44)" identifier = (cast_expression "(__locale_data *)operator_new(0x44)" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "*(undefined2 *)(p_Var4 + 0x10) = 0;" (assignment_expression "*(undefined2 *)(p_Var4 + 0x10) = 0" (pointer_expression "*(undefined2 *)(p_Var4 + 0x10)" * (cast_expression "(undefined2 *)(p_Var4 + 0x10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x10)" ( (binary_expression "p_Var4 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 4) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 4) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 4)" * (cast_expression "(undefined4 *)(p_Var4 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 4)" ( (binary_expression "p_Var4 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac;" (assignment_expression "*(undefined ***)p_Var4 = &PTR____moneypunct_cache_004116ac" (pointer_expression "*(undefined ***)p_Var4" * (cast_expression "(undefined ***)p_Var4" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_004116ac" & identifier)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 8) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 8) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 8)" * (cast_expression "(undefined4 *)(p_Var4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 8)" ( (binary_expression "p_Var4 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0xc) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0xc)" * (cast_expression "(undefined4 *)(p_Var4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0xc)" ( (binary_expression "p_Var4 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x12] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x12] = (__locale_data)0x0" (subscript_expression "p_Var4[0x12]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x14) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x14)" * (cast_expression "(undefined4 *)(p_Var4 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x14)" ( (binary_expression "p_Var4 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x18) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x18)" * (cast_expression "(undefined4 *)(p_Var4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x18)" ( (binary_expression "p_Var4 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x1c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x1c)" ( (binary_expression "p_Var4 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x20) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x20) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x20)" * (cast_expression "(undefined4 *)(p_Var4 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x20)" ( (binary_expression "p_Var4 + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x24) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x24)" * (cast_expression "(undefined4 *)(p_Var4 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x24)" ( (binary_expression "p_Var4 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x28) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x28)" * (cast_expression "(undefined4 *)(p_Var4 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x28)" ( (binary_expression "p_Var4 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x2c)" * (cast_expression "(undefined4 *)(p_Var4 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x2c)" ( (binary_expression "p_Var4 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x30) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x30)" * (cast_expression "(undefined4 *)(p_Var4 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x30)" ( (binary_expression "p_Var4 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(p_Var4 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(p_Var4 + 0x34) = 0" (pointer_expression "*(undefined4 *)(p_Var4 + 0x34)" * (cast_expression "(undefined4 *)(p_Var4 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 0x34)" ( (binary_expression "p_Var4 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var4[0x43] = (__locale_data)0x0;" (assignment_expression "p_Var4[0x43] = (__locale_data)0x0" (subscript_expression "p_Var4[0x43]" identifier [ number_literal ]) = (cast_expression "(__locale_data)0x0" ( (type_descriptor "__locale_data" type_identifier) ) number_literal)) ;) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0x14);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0x14)" identifier = (cast_expression "(__locale_struct *)operator_new(0x14)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[2] = p_Var4;" (assignment_expression "p_Var3->__locales[2] = p_Var4" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_00413600" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_00413600" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_00413600" & identifier))) ;) comment (expression_statement "moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0);" (comma_expression "moneypunct<char,false>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var3,(char *)0x0)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var3,(char *)0x0)" identifier (argument_list "(p_Var3,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[3] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[3] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[3]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n          }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(this + 4) = *(int *)(this + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__moneypunct_shim_0041200c" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_shim_0041200c" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_shim_0041200c" & identifier))) ;) (expression_statement "p_Var3->__locales[4] = p_Var4;" (assignment_expression "p_Var3->__locales[4] = p_Var4" (subscript_expression "p_Var3->__locales[4]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = identifier) ;) comment (labeled_statement "__facet_shims::__moneypunct_fill_cache<char,false>(0,this,p_Var4);" statement_identifier : (ERROR ":" :) (expression_statement "__moneypunct_fill_cache<char,false>(0,this,p_Var4);" (comma_expression "__moneypunct_fill_cache<char,false>(0,this,p_Var4)" (binary_expression "__moneypunct_fill_cache<char" identifier < identifier) , (binary_expression "false>(0,this,p_Var4)" false > (parenthesized_expression "(0,this,p_Var4)" ( (comma_expression "0,this,p_Var4" number_literal , (comma_expression "this,p_Var4" identifier , identifier)) )))) ;)) }))) (return_statement "return p_Var3;" return identifier ;) })) (expression_statement "p_Var3 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var3 = (__locale_struct *)operator_new(0xc)" identifier = (cast_expression "(__locale_struct *)operator_new(0xc)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "p_Var3->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var3->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var3->__locales[1]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)0x0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_004136d0" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_004136d0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_004136d0" & identifier))) ;) (expression_statement "p_Var3->__locales[2] = (__locale_data *)this;" (assignment_expression "p_Var3->__locales[2] = (__locale_data *)this" (subscript_expression "p_Var3->__locales[2]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)this" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n      }" { (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(this + 4) = *(int *)(this + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 4) = *(int *)(this + 4) + 1;" (assignment_expression "*(int *)(this + 4) = *(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 4) + 1" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320;" (assignment_expression "p_Var3->__locales[0] = (__locale_data *)&PTR__money_put_shim_0040a320" (subscript_expression "p_Var3->__locales[0]" (field_expression "p_Var3->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__money_put_shim_0040a320" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__money_put_shim_0040a320" & identifier))) ;) }))))))) }) (else_clause "else {\n    p_Var3 = (__locale_struct *)*puVar2;\n  }" else (compound_statement "{\n    p_Var3 = (__locale_struct *)*puVar2;\n  }" { (expression_statement "p_Var3 = (__locale_struct *)*puVar2;" (assignment_expression "p_Var3 = (__locale_struct *)*puVar2" identifier = (cast_expression "(__locale_struct *)*puVar2" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }))) (return_statement "return p_Var3;" return identifier ;) }))
(translation_unit "undefined4 * FUN_00286a40(int param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}\n\n" (function_definition "undefined4 * FUN_00286a40(int param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* FUN_00286a40(int param_1,undefined *param_2)" * (function_declarator "FUN_00286a40(int param_1,undefined *param_2)" identifier (parameter_list "(int param_1,undefined *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);" (assignment_expression "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier = (cast_expression "(undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" identifier (argument_list "(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" ( identifier , identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" if (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" ( (binary_expression "puVar2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }" { (if_statement "if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413f14)" ( (binary_expression "param_2 == PTR_DAT_00413f14" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x68);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x68)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x68)" identifier (argument_list "(0x68)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116cc;" (assignment_expression "*puVar2 = &PTR_FUN_004116cc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116cc" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar2 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 9)" * (cast_expression "(undefined2 *)(puVar2 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 9)" ( (binary_expression "puVar2 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x19) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x19) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x19)" * (cast_expression "(undefined1 *)(puVar2 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x19)" ( (binary_expression "puVar2 + 0x19" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_00413584;" (assignment_expression "*puVar4 = &PTR_FUN_00413584" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00413584" & identifier)) ;) (expression_statement "FUN_00291e90(puVar4,0);" (call_expression "FUN_00291e90(puVar4,0)" identifier (argument_list "(puVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00411f98;" (assignment_expression "*puVar4 = &PTR_FUN_00411f98" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00411f98" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00289dd0(0,param_1,puVar2);" (call_expression "FUN_00289dd0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413f3c)" ( (binary_expression "param_2 == PTR_DAT_00413f3c" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_0041354c;" (assignment_expression "*puVar2 = &PTR_FUN_0041354c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0041354c" & identifier)) ;) (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" identifier = (call_expression "FUN_0024a700()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00411fbc;" (assignment_expression "*puVar2 = &PTR_FUN_00411fbc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00411fbc" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (if_statement "if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413d24)" ( (binary_expression "param_2 == PTR_DAT_00413d24" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136e8;" (assignment_expression "*puVar2 = &PTR_FUN_004136e8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136e8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_004120e8;" (assignment_expression "*puVar2 = &PTR_FUN_004120e8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004120e8" & identifier)) ;) }) (else_clause "else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (if_statement "if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" if (parenthesized_expression "(param_2 == PTR_DAT_00413bc8)" ( (binary_expression "param_2 == PTR_DAT_00413bc8" identifier == identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136b8;" (assignment_expression "*puVar2 = &PTR_FUN_004136b8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136b8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a308;" (assignment_expression "*puVar2 = &PTR_FUN_0040a308" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a308" & identifier)) ;) }) (else_clause "else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" else (compound_statement "{\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" { (if_statement "if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" if (parenthesized_expression "(param_2 != PTR_DAT_00413e4c)" ( (binary_expression "param_2 != PTR_DAT_00413e4c" identifier != identifier) )) (compound_statement "{\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" { (if_statement "if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" if (parenthesized_expression "(param_2 == PTR_DAT_00413bb4)" ( (binary_expression "param_2 == PTR_DAT_00413bb4" identifier == identifier) )) (compound_statement "{\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116bc;" (assignment_expression "*puVar2 = &PTR_FUN_004116bc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116bc" & identifier)) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" * (cast_expression "(undefined2 *)(puVar2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x12)" ( (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x43)" ( (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004135cc;" (assignment_expression "*puVar4 = &PTR_FUN_004135cc" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004135cc" & identifier)) ;) (expression_statement "FUN_00292480(puVar4,0,0);" (call_expression "FUN_00292480(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00411fd8;" (assignment_expression "*puVar4 = &PTR_FUN_00411fd8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00411fd8" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0028a5b0(0,param_1,puVar2);" (call_expression "FUN_0028a5b0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) }) (else_clause "else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" else (compound_statement "{\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" { (if_statement "if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" if (parenthesized_expression "(param_2 != PTR_DAT_00413e9c)" ( (binary_expression "param_2 != PTR_DAT_00413e9c" identifier != identifier) )) (compound_statement "{\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" { (if_statement "if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413c90)" ( (binary_expression "param_2 == PTR_DAT_00413c90" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "FUN_002c4d10(puVar2,0);" (call_expression "FUN_002c4d10(puVar2,0)" identifier (argument_list "(puVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a338;" (assignment_expression "*puVar2 = &PTR_FUN_0040a338" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a338" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413e34)" ( (binary_expression "param_2 == PTR_DAT_00413e34" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x128);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x128)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x128)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x128)" identifier (argument_list "(0x128)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_0041278c;" (assignment_expression "*puVar2 = &PTR_FUN_0041278c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0041278c" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x49) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x49)" * (cast_expression "(undefined1 *)(puVar2 + 0x49)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x49)" ( (binary_expression "puVar2 + 0x49" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_0041327c;" (assignment_expression "*puVar4 = &PTR_FUN_0041327c" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_0041327c" & identifier)) ;) (expression_statement "FUN_002921a0(puVar4,0);" (call_expression "FUN_002921a0(puVar4,0)" identifier (argument_list "(puVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00412040;" (assignment_expression "*puVar4 = &PTR_FUN_00412040" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00412040" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0028a060(0,param_1,puVar2);" (call_expression "FUN_0028a060(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413e58)" ( (binary_expression "param_2 == PTR_DAT_00413e58" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_00413244;" (assignment_expression "*puVar2 = &PTR_FUN_00413244" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00413244" & identifier)) ;) (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" identifier = (call_expression "FUN_0024a700()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00412064;" (assignment_expression "*puVar2 = &PTR_FUN_00412064" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00412064" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413c08)" ( (binary_expression "param_2 == PTR_DAT_00413c08" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133e0;" (assignment_expression "*puVar2 = &PTR_FUN_004133e0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133e0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_00412114;" (assignment_expression "*puVar2 = &PTR_FUN_00412114" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_00412114" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413eb8)" ( (binary_expression "param_2 == PTR_DAT_00413eb8" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133b0;" (assignment_expression "*puVar2 = &PTR_FUN_004133b0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133b0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a354;" (assignment_expression "*puVar2 = &PTR_FUN_0040a354" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a354" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413fb4)" ( (binary_expression "param_2 == PTR_DAT_00413fb4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004133c8;" (assignment_expression "*puVar2 = &PTR_FUN_004133c8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004133c8" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a36c;" (assignment_expression "*puVar2 = &PTR_FUN_0040a36c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a36c" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413dd4)" ( (binary_expression "param_2 == PTR_DAT_00413dd4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004127b4;" (assignment_expression "*puVar2 = &PTR_FUN_004127b4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004127b4" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" * (cast_expression "(undefined1 *)(puVar2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1b)" ( (binary_expression "puVar2 + 0x1b" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004132c4;" (assignment_expression "*puVar4 = &PTR_FUN_004132c4" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004132c4" & identifier)) ;) (expression_statement "FUN_002931a0(puVar4,0,0);" (call_expression "FUN_002931a0(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_00412080;" (assignment_expression "*puVar4 = &PTR_FUN_00412080" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00412080" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0028acb0(0,param_1,puVar2);" (call_expression "FUN_0028acb0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413ef0)" ( (binary_expression "param_2 == PTR_DAT_00413ef0" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004127c4;" (assignment_expression "*puVar2 = &PTR_FUN_004127c4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004127c4" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" * (cast_expression "(undefined1 *)(puVar2 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" * (cast_expression "(undefined1 *)(puVar2 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1b)" ( (binary_expression "puVar2 + 0x1b" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_004132f8;" (assignment_expression "*puVar4 = &PTR_FUN_004132f8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004132f8" & identifier)) ;) (expression_statement "FUN_00293770(puVar4,0,0);" (call_expression "FUN_00293770(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_004120b4;" (assignment_expression "*puVar4 = &PTR_FUN_004120b4" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004120b4" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0028b0e0(0,param_1,puVar2);" (call_expression "FUN_0028b0e0(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" if (parenthesized_expression "(param_2 == PTR_DAT_00413df4)" ( (binary_expression "param_2 == PTR_DAT_00413df4" identifier == identifier) )) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" { (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "FUN_002b64f0(puVar2,0);" (call_expression "FUN_002b64f0(puVar2,0)" identifier (argument_list "(puVar2,0)" ( identifier , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" else (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a384;" (assignment_expression "*puVar2 = &PTR_FUN_0040a384" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a384" & identifier)) ;) (return_statement "return puVar2;" return identifier ;) })) (expression_statement "FUN_0028db20("cannot create shim for unknown locale::facet");" (call_expression "FUN_0028db20("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 "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x44)" identifier (argument_list "(0x44)" ( number_literal ))))) ;) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" * (cast_expression "(undefined2 *)(puVar2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 4)" ( (binary_expression "puVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004116ac;" (assignment_expression "*puVar2 = &PTR_FUN_004116ac" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004116ac" & identifier)) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x12)" ( (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x43)" ( (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = &PTR_FUN_00413600;" (assignment_expression "*puVar4 = &PTR_FUN_00413600" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00413600" & identifier)) ;) (expression_statement "FUN_002929c0(puVar4,0,0);" (call_expression "FUN_002929c0(puVar4,0,0)" identifier (argument_list "(puVar4,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" else (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar4 = &PTR_FUN_0041200c;" (assignment_expression "*puVar4 = &PTR_FUN_0041200c" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_0041200c" & identifier)) ;) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0028a930(0,param_1,puVar2);" (call_expression "FUN_0028a930(0,param_1,puVar2)" identifier (argument_list "(0,param_1,puVar2)" ( number_literal , identifier , identifier ))) ;) }))) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" identifier = (cast_expression "(undefined4 *)FUN_00246670(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" identifier = identifier) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_004136d0;" (assignment_expression "*puVar2 = &PTR_FUN_004136d0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_004136d0" & identifier)) ;) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" if (parenthesized_expression "(puVar1 == (undefined *)0x0)" ( (binary_expression "puVar1 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" { (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" else (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "*puVar2 = &PTR_FUN_0040a320;" (assignment_expression "*puVar2 = &PTR_FUN_0040a320" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_0040a320" & identifier)) ;) }))))))) }) (else_clause "else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" else (compound_statement "{\n    puVar2 = (undefined4 *)*puVar2;\n  }" { (expression_statement "puVar2 = (undefined4 *)*puVar2;" (assignment_expression "puVar2 = (undefined4 *)*puVar2" identifier = (cast_expression "(undefined4 *)*puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) }))) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))))) ;) (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 (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 * IDENT) = (pointer_expression & IDENT)) ;) (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 (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_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 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 TYPE) ) 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 (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 TYPE) ) 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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (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 (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 (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 * IDENT) = (pointer_expression & IDENT)) ;) (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 (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 (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 * IDENT) = (pointer_expression & IDENT)) ;) (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 (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (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 (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 * IDENT) = (pointer_expression & IDENT)) ;) (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 (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 (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (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 = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (return_statement return IDENT ;) })) (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 (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 * 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (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 TYPE) ) 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 (subscript_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 = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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 "undefined4 * FUN_00286a40(int param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00286a40(int param_1,undefined *param_2)" (* "*") (function_declarator "FUN_00286a40(int param_1,undefined *param_2)" (identifier "FUN_00286a40") (parameter_list "(int param_1,undefined *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined *param_2" (type_identifier "undefined") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);\n  if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }\n  return puVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);" (assignment_expression "puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" (identifier "FUN_00290300") (argument_list "(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe)" (( "(") (identifier "param_1") (, ",") (identifier "PTR_PTR_00413bac") (, ",") (identifier "PTR_PTR_00413f2c") (, ",") (number_literal "0xfffffffe") () ")"))))) (; ";")) (if_statement "if (puVar2 == (undefined4 *)0x0) {\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" (if "if") (parenthesized_expression "(puVar2 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined4 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }\n    if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }\n  }" ({ "{") (if_statement "if (param_2 == PTR_DAT_00413f14) {\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413f14)" (( "(") (binary_expression "param_2 == PTR_DAT_00413f14" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413f14")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x68);\n      puVar2[1] = 0;\n      puVar2[2] = 0;\n      puVar2[3] = 0;\n      *puVar2 = &PTR_FUN_004116cc;\n      *(undefined1 *)(puVar2 + 4) = 0;\n      puVar2[5] = 0;\n      puVar2[6] = 0;\n      puVar2[7] = 0;\n      puVar2[8] = 0;\n      *(undefined2 *)(puVar2 + 9) = 0;\n      *(undefined1 *)(puVar2 + 0x19) = 0;\n      puVar4 = (undefined4 *)FUN_00246670(0x14);\n      puVar4[1] = 0;\n      puVar4[2] = puVar2;\n      *puVar4 = &PTR_FUN_00413584;\n                    \n      FUN_00291e90(puVar4,0);\n      puVar4[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar4 = &PTR_FUN_00411f98;\n      puVar4[4] = puVar2;\n                    \n      FUN_00289dd0(0,param_1,puVar2);\n      return puVar4;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x68);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x68)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x68)" (identifier "FUN_00246670") (argument_list "(0x68)" (( "(") (number_literal "0x68") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004116cc;" (assignment_expression "*puVar2 = &PTR_FUN_004116cc" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004116cc" (& "&") (identifier "PTR_FUN_004116cc"))) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar2 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 9)" (* "*") (cast_expression "(undefined2 *)(puVar2 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 9)" (( "(") (binary_expression "puVar2 + 9" (identifier "puVar2") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 0x19) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x19) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x19)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 0x19)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x19)" (( "(") (binary_expression "puVar2 + 0x19" (identifier "puVar2") (+ "+") (number_literal "0x19")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_00413584;" (assignment_expression "*puVar4 = &PTR_FUN_00413584" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00413584" (& "&") (identifier "PTR_FUN_00413584"))) (; ";")) (expression_statement "FUN_00291e90(puVar4,0);" (call_expression "FUN_00291e90(puVar4,0)" (identifier "FUN_00291e90") (argument_list "(puVar4,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_00411f98;" (assignment_expression "*puVar4 = &PTR_FUN_00411f98" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00411f98" (& "&") (identifier "PTR_FUN_00411f98"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_00289dd0(0,param_1,puVar2);" (call_expression "FUN_00289dd0(0,param_1,puVar2)" (identifier "FUN_00289dd0") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413f3c) {\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }\n    else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413f3c)" (( "(") (binary_expression "param_2 == PTR_DAT_00413f3c" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413f3c")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0x10);\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_0041354c;\n                    \n      uVar3 = FUN_0024a700();\n      puVar2[2] = uVar3;\n      puVar2[3] = param_1;\n      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_00411fbc;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x10)" (identifier "FUN_00246670") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_0041354c;" (assignment_expression "*puVar2 = &PTR_FUN_0041354c" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0041354c" (& "&") (identifier "PTR_FUN_0041354c"))) (; ";")) (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" (identifier "uVar3") (= "=") (call_expression "FUN_0024a700()" (identifier "FUN_0024a700") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_00411fbc;" (assignment_expression "*puVar2 = &PTR_FUN_00411fbc" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_00411fbc" (& "&") (identifier "PTR_FUN_00411fbc"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_00413d24) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }\n    else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413d24)" (( "(") (binary_expression "param_2 == PTR_DAT_00413d24" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413d24")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136e8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_004120e8;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004136e8;" (assignment_expression "*puVar2 = &PTR_FUN_004136e8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004136e8" (& "&") (identifier "PTR_FUN_004136e8"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_004120e8;" (assignment_expression "*puVar2 = &PTR_FUN_004120e8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004120e8" (& "&") (identifier "PTR_FUN_004120e8"))) (; ";")) (} "}")) (else_clause "else if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (else "else") (if_statement "if (param_2 == PTR_DAT_00413bc8) {\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }\n    else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413bc8)" (( "(") (binary_expression "param_2 == PTR_DAT_00413bc8" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413bc8")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136b8;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a308;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004136b8;" (assignment_expression "*puVar2 = &PTR_FUN_004136b8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004136b8" (& "&") (identifier "PTR_FUN_004136b8"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a308;" (assignment_expression "*puVar2 = &PTR_FUN_0040a308" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a308" (& "&") (identifier "PTR_FUN_0040a308"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" (else "else") (compound_statement "{\n      if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }\n      puVar2 = (undefined4 *)FUN_00246670(0xc);\n      puVar1 = PTR___pthread_key_create_00413ff8;\n      puVar2[1] = 0;\n      *puVar2 = &PTR_FUN_004136d0;\n      puVar2[2] = param_1;\n      if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }\n      *puVar2 = &PTR_FUN_0040a320;\n    }" ({ "{") (if_statement "if (param_2 != PTR_DAT_00413e4c) {\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" (if "if") (parenthesized_expression "(param_2 != PTR_DAT_00413e4c)" (( "(") (binary_expression "param_2 != PTR_DAT_00413e4c" (identifier "param_2") (!= "!=") (identifier "PTR_DAT_00413e4c")) () ")")) (compound_statement "{\n        if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }\n        return puVar4;\n      }" ({ "{") (if_statement "if (param_2 == PTR_DAT_00413bb4) {\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }\n        else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413bb4)" (( "(") (binary_expression "param_2 == PTR_DAT_00413bb4" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413bb4")) () ")")) (compound_statement "{\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          puVar2[1] = 0;\n          puVar2[2] = 0;\n          *puVar2 = &PTR_FUN_004116bc;\n          puVar2[3] = 0;\n          *(undefined2 *)(puVar2 + 4) = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_004135cc;\n                    \n          FUN_00292480(puVar4,0,0);\n          puVar4[3] = param_1;\n          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_00411fd8;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a5b0(0,param_1,puVar2);\n        }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x44)" (identifier "FUN_00246670") (argument_list "(0x44)" (( "(") (number_literal "0x44") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004116bc;" (assignment_expression "*puVar2 = &PTR_FUN_004116bc" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004116bc" (& "&") (identifier "PTR_FUN_004116bc"))) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x12)" (( "(") (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x12")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" (identifier "puVar2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" (identifier "puVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x43)" (( "(") (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x43")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_004135cc;" (assignment_expression "*puVar4 = &PTR_FUN_004135cc" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_004135cc" (& "&") (identifier "PTR_FUN_004135cc"))) (; ";")) (expression_statement "FUN_00292480(puVar4,0,0);" (call_expression "FUN_00292480(puVar4,0,0)" (identifier "FUN_00292480") (argument_list "(puVar4,0,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" (else "else") (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_00411fd8;" (assignment_expression "*puVar4 = &PTR_FUN_00411fd8" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00411fd8" (& "&") (identifier "PTR_FUN_00411fd8"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_0028a5b0(0,param_1,puVar2);" (call_expression "FUN_0028a5b0(0,param_1,puVar2)" (identifier "FUN_0028a5b0") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" (else "else") (compound_statement "{\n          if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }\n          puVar2 = (undefined4 *)FUN_00246670(0x44);\n          *(undefined2 *)(puVar2 + 4) = 0;\n          puVar2[1] = 0;\n          *puVar2 = &PTR_FUN_004116ac;\n          puVar2[2] = 0;\n          puVar2[3] = 0;\n          *(undefined1 *)((int)puVar2 + 0x12) = 0;\n          puVar2[5] = 0;\n          puVar2[6] = 0;\n          puVar2[7] = 0;\n          puVar2[8] = 0;\n          puVar2[9] = 0;\n          puVar2[10] = 0;\n          puVar2[0xb] = 0;\n          puVar2[0xc] = 0;\n          puVar2[0xd] = 0;\n          *(undefined1 *)((int)puVar2 + 0x43) = 0;\n          puVar4 = (undefined4 *)FUN_00246670(0x14);\n          puVar4[1] = 0;\n          puVar4[2] = puVar2;\n          *puVar4 = &PTR_FUN_00413600;\n                    \n          FUN_002929c0(puVar4,0,0);\n          puVar1 = PTR___pthread_key_create_00413ff8;\n          puVar4[3] = param_1;\n          if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }\n          *puVar4 = &PTR_FUN_0041200c;\n          puVar4[4] = puVar2;\n                    \n          FUN_0028a930(0,param_1,puVar2);\n        }" ({ "{") (if_statement "if (param_2 != PTR_DAT_00413e9c) {\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" (if "if") (parenthesized_expression "(param_2 != PTR_DAT_00413e9c)" (( "(") (binary_expression "param_2 != PTR_DAT_00413e9c" (identifier "param_2") (!= "!=") (identifier "PTR_DAT_00413e9c")) () ")")) (compound_statement "{\n            if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }\n            if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }\n            if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }\n                    \n            FUN_0028db20("cannot create shim for unknown locale::facet");\n          }" ({ "{") (if_statement "if (param_2 == PTR_DAT_00413c90) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413c90)" (( "(") (binary_expression "param_2 == PTR_DAT_00413c90" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413c90")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002c4d10(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a338;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "FUN_002c4d10(puVar2,0);" (call_expression "FUN_002c4d10(puVar2,0)" (identifier "FUN_002c4d10") (argument_list "(puVar2,0)" (( "(") (identifier "puVar2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a338;" (assignment_expression "*puVar2 = &PTR_FUN_0040a338" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a338" (& "&") (identifier "PTR_FUN_0040a338"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413e34) {\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413e34)" (( "(") (binary_expression "param_2 == PTR_DAT_00413e34" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413e34")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x128);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_0041278c;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              *(undefined1 *)(puVar2 + 0x49) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_0041327c;\n                    \n              FUN_002921a0(puVar4,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412040;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028a060(0,param_1,puVar2);\n              return puVar4;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x128);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x128)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x128)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x128)" (identifier "FUN_00246670") (argument_list "(0x128)" (( "(") (number_literal "0x128") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_0041278c;" (assignment_expression "*puVar2 = &PTR_FUN_0041278c" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0041278c" (& "&") (identifier "PTR_FUN_0041278c"))) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 0x49) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x49) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x49)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 0x49)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x49)" (( "(") (binary_expression "puVar2 + 0x49" (identifier "puVar2") (+ "+") (number_literal "0x49")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_0041327c;" (assignment_expression "*puVar4 = &PTR_FUN_0041327c" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_0041327c" (& "&") (identifier "PTR_FUN_0041327c"))) (; ";")) (expression_statement "FUN_002921a0(puVar4,0);" (call_expression "FUN_002921a0(puVar4,0)" (identifier "FUN_002921a0") (argument_list "(puVar4,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_00412040;" (assignment_expression "*puVar4 = &PTR_FUN_00412040" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00412040" (& "&") (identifier "PTR_FUN_00412040"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_0028a060(0,param_1,puVar2);" (call_expression "FUN_0028a060(0,param_1,puVar2)" (identifier "FUN_0028a060") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413e58) {\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413e58)" (( "(") (binary_expression "param_2 == PTR_DAT_00413e58" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413e58")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x10);\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_00413244;\n                    \n              uVar3 = FUN_0024a700();\n              puVar2[2] = uVar3;\n              puVar2[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412064;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x10);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x10)" (identifier "FUN_00246670") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_00413244;" (assignment_expression "*puVar2 = &PTR_FUN_00413244" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_00413244" (& "&") (identifier "PTR_FUN_00413244"))) (; ";")) (expression_statement "uVar3 = FUN_0024a700();" (assignment_expression "uVar3 = FUN_0024a700()" (identifier "uVar3") (= "=") (call_expression "FUN_0024a700()" (identifier "FUN_0024a700") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar2[3] = param_1;" (assignment_expression "puVar2[3] = param_1" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_00412064;" (assignment_expression "*puVar2 = &PTR_FUN_00412064" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_00412064" (& "&") (identifier "PTR_FUN_00412064"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413c08) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413c08)" (( "(") (binary_expression "param_2 == PTR_DAT_00413c08" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413c08")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133e0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_00412114;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004133e0;" (assignment_expression "*puVar2 = &PTR_FUN_004133e0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004133e0" (& "&") (identifier "PTR_FUN_004133e0"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_00412114;" (assignment_expression "*puVar2 = &PTR_FUN_00412114" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_00412114" (& "&") (identifier "PTR_FUN_00412114"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413eb8) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413eb8)" (( "(") (binary_expression "param_2 == PTR_DAT_00413eb8" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413eb8")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133b0;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a354;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004133b0;" (assignment_expression "*puVar2 = &PTR_FUN_004133b0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004133b0" (& "&") (identifier "PTR_FUN_004133b0"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a354;" (assignment_expression "*puVar2 = &PTR_FUN_0040a354" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a354" (& "&") (identifier "PTR_FUN_0040a354"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413fb4) {\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413fb4)" (( "(") (binary_expression "param_2 == PTR_DAT_00413fb4" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413fb4")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0xc);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[1] = 0;\n              *puVar2 = &PTR_FUN_004133c8;\n              puVar2[2] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a36c;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004133c8;" (assignment_expression "*puVar2 = &PTR_FUN_004133c8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004133c8" (& "&") (identifier "PTR_FUN_004133c8"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a36c;" (assignment_expression "*puVar2 = &PTR_FUN_0040a36c" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a36c" (& "&") (identifier "PTR_FUN_0040a36c"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413dd4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413dd4)" (( "(") (binary_expression "param_2 == PTR_DAT_00413dd4" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413dd4")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127b4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132c4;\n                    \n              FUN_002931a0(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_00412080;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028acb0(0,param_1,puVar2);\n              return puVar4;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x70)" (identifier "FUN_00246670") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004127b4;" (assignment_expression "*puVar2 = &PTR_FUN_004127b4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004127b4" (& "&") (identifier "PTR_FUN_004127b4"))) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" (identifier "puVar2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" (identifier "puVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" (identifier "puVar2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" (identifier "puVar2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 0x1b)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1b)" (( "(") (binary_expression "puVar2 + 0x1b" (identifier "puVar2") (+ "+") (number_literal "0x1b")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_004132c4;" (assignment_expression "*puVar4 = &PTR_FUN_004132c4" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_004132c4" (& "&") (identifier "PTR_FUN_004132c4"))) (; ";")) (expression_statement "FUN_002931a0(puVar4,0,0);" (call_expression "FUN_002931a0(puVar4,0,0)" (identifier "FUN_002931a0") (argument_list "(puVar4,0,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_00412080;" (assignment_expression "*puVar4 = &PTR_FUN_00412080" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00412080" (& "&") (identifier "PTR_FUN_00412080"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_0028acb0(0,param_1,puVar2);" (call_expression "FUN_0028acb0(0,param_1,puVar2)" (identifier "FUN_0028acb0") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413ef0) {\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413ef0)" (( "(") (binary_expression "param_2 == PTR_DAT_00413ef0" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413ef0")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x70);\n              puVar2[1] = 0;\n              puVar2[2] = 0;\n              puVar2[3] = 0;\n              *puVar2 = &PTR_FUN_004127c4;\n              *(undefined1 *)(puVar2 + 4) = 0;\n              puVar2[5] = 0;\n              puVar2[6] = 0;\n              puVar2[7] = 0;\n              puVar2[8] = 0;\n              puVar2[9] = 0;\n              puVar2[10] = 0;\n              puVar2[0xb] = 0;\n              puVar2[0xc] = 0;\n              puVar2[0xd] = 0;\n              puVar2[0xe] = 0;\n              puVar2[0xf] = 0;\n              *(undefined1 *)(puVar2 + 0x1b) = 0;\n              puVar4 = (undefined4 *)FUN_00246670(0x14);\n              puVar4[1] = 0;\n              puVar4[2] = puVar2;\n              *puVar4 = &PTR_FUN_004132f8;\n                    \n              FUN_00293770(puVar4,0,0);\n              puVar4[3] = param_1;\n              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar4 = &PTR_FUN_004120b4;\n              puVar4[4] = puVar2;\n                    \n              FUN_0028b0e0(0,param_1,puVar2);\n              return puVar4;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x70);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x70)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x70)" (identifier "FUN_00246670") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004127c4;" (assignment_expression "*puVar2 = &PTR_FUN_004127c4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004127c4" (& "&") (identifier "PTR_FUN_004127c4"))) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" (identifier "puVar2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" (identifier "puVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xe] = 0;" (assignment_expression "puVar2[0xe] = 0" (subscript_expression "puVar2[0xe]" (identifier "puVar2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xf] = 0;" (assignment_expression "puVar2[0xf] = 0" (subscript_expression "puVar2[0xf]" (identifier "puVar2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar2 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar2 + 0x1b)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 0x1b)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1b)" (( "(") (binary_expression "puVar2 + 0x1b" (identifier "puVar2") (+ "+") (number_literal "0x1b")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_004132f8;" (assignment_expression "*puVar4 = &PTR_FUN_004132f8" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_004132f8" (& "&") (identifier "PTR_FUN_004132f8"))) (; ";")) (expression_statement "FUN_00293770(puVar4,0,0);" (call_expression "FUN_00293770(puVar4,0,0)" (identifier "FUN_00293770") (argument_list "(puVar4,0,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_00413ff8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_00413ff8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_00413ff8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_004120b4;" (assignment_expression "*puVar4 = &PTR_FUN_004120b4" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_004120b4" (& "&") (identifier "PTR_FUN_004120b4"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_0028b0e0(0,param_1,puVar2);" (call_expression "FUN_0028b0e0(0,param_1,puVar2)" (identifier "FUN_0028b0e0") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (if_statement "if (param_2 == PTR_DAT_00413df4) {\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" (if "if") (parenthesized_expression "(param_2 == PTR_DAT_00413df4)" (( "(") (binary_expression "param_2 == PTR_DAT_00413df4" (identifier "param_2") (== "==") (identifier "PTR_DAT_00413df4")) () ")")) (compound_statement "{\n              puVar2 = (undefined4 *)FUN_00246670(0x14);\n                    \n              FUN_002b64f0(puVar2,0);\n              puVar1 = PTR___pthread_key_create_00413ff8;\n              puVar2[4] = param_1;\n              if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }\n              *puVar2 = &PTR_FUN_0040a384;\n              return puVar2;\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "FUN_002b64f0(puVar2,0);" (call_expression "FUN_002b64f0(puVar2,0)" (identifier "FUN_002b64f0") (argument_list "(puVar2,0)" (( "(") (identifier "puVar2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[4] = param_1;" (assignment_expression "puVar2[4] = param_1" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }\n              else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n              }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" (else "else") (compound_statement "{\n                LOCK();\n                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n                UNLOCK();\n              }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a384;" (assignment_expression "*puVar2 = &PTR_FUN_0040a384" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a384" (& "&") (identifier "PTR_FUN_0040a384"))) (; ";")) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (expression_statement "FUN_0028db20("cannot create shim for unknown locale::facet");" (call_expression "FUN_0028db20("cannot create shim for unknown locale::facet")" (identifier "FUN_0028db20") (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 "puVar2 = (undefined4 *)FUN_00246670(0x44);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0x44)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x44)" (identifier "FUN_00246670") (argument_list "(0x44)" (( "(") (number_literal "0x44") () ")"))))) (; ";")) (expression_statement "*(undefined2 *)(puVar2 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar2 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar2 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar2 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 4)" (( "(") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004116ac;" (assignment_expression "*puVar2 = &PTR_FUN_004116ac" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004116ac" (& "&") (identifier "PTR_FUN_004116ac"))) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x12) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x12) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x12)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x12)" (( "(") (binary_expression "(int)puVar2 + 0x12" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x12")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xc] = 0;" (assignment_expression "puVar2[0xc] = 0" (subscript_expression "puVar2[0xc]" (identifier "puVar2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xd] = 0;" (assignment_expression "puVar2[0xd] = 0" (subscript_expression "puVar2[0xd]" (identifier "puVar2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x43) = 0;" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x43) = 0" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x43)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x43)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x43)" (( "(") (binary_expression "(int)puVar2 + 0x43" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x43")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_00246670(0x14);" (assignment_expression "puVar4 = (undefined4 *)FUN_00246670(0x14)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0x14)" (identifier "FUN_00246670") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[2] = puVar2;" (assignment_expression "puVar4[2] = puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_00413600;" (assignment_expression "*puVar4 = &PTR_FUN_00413600" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00413600" (& "&") (identifier "PTR_FUN_00413600"))) (; ";")) (expression_statement "FUN_002929c0(puVar4,0,0);" (call_expression "FUN_002929c0(puVar4,0,0)" (identifier "FUN_002929c0") (argument_list "(puVar4,0,0)" (( "(") (identifier "puVar4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar4[3] = param_1;" (assignment_expression "puVar4[3] = param_1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }\n          else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n          }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" (else "else") (compound_statement "{\n            LOCK();\n            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n            UNLOCK();\n          }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar4 = &PTR_FUN_0041200c;" (assignment_expression "*puVar4 = &PTR_FUN_0041200c" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_0041200c" (& "&") (identifier "PTR_FUN_0041200c"))) (; ";")) (expression_statement "puVar4[4] = puVar2;" (assignment_expression "puVar4[4] = puVar2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "FUN_0028a930(0,param_1,puVar2);" (call_expression "FUN_0028a930(0,param_1,puVar2)" (identifier "FUN_0028a930") (argument_list "(0,param_1,puVar2)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "puVar2") () ")"))) (; ";")) (} "}")))) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined4 *)FUN_00246670(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_00246670(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_00246670(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670(0xc)" (identifier "FUN_00246670") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_00413ff8;" (assignment_expression "puVar1 = PTR___pthread_key_create_00413ff8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_00413ff8")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_004136d0;" (assignment_expression "*puVar2 = &PTR_FUN_004136d0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_004136d0" (& "&") (identifier "PTR_FUN_004136d0"))) (; ";")) (expression_statement "puVar2[2] = param_1;" (assignment_expression "puVar2[2] = param_1" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }\n      else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (if "if") (parenthesized_expression "(puVar1 == (undefined *)0x0)" (( "(") (binary_expression "puVar1 == (undefined *)0x0" (identifier "puVar1") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n      }" ({ "{") (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" (else "else") (compound_statement "{\n        LOCK();\n        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;\n        UNLOCK();\n      }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 1" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar2 = &PTR_FUN_0040a320;" (assignment_expression "*puVar2 = &PTR_FUN_0040a320" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_0040a320" (& "&") (identifier "PTR_FUN_0040a320"))) (; ";")) (} "}")))))))) (} "}")) (else_clause "else {\n    puVar2 = (undefined4 *)*puVar2;\n  }" (else "else") (compound_statement "{\n    puVar2 = (undefined4 *)*puVar2;\n  }" ({ "{") (expression_statement "puVar2 = (undefined4 *)*puVar2;" (assignment_expression "puVar2 = (undefined4 *)*puVar2" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (} "}")))) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::locale::facet::_M_sso_shim(std::locale::id const*) const */

type_3 * __thiscall std::locale::facet::_M_sso_shim(facet *var_10,type_5 *var_3)

{
  type_1 *var_15;
  type_2 *var_2;
  type_3 *p_Var3;
  type_4 *var_5;
  
  var_2 = (type_2 *)var_1(var_10,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);
  if (var_2 == (type_2 *)0x0) {
    if (var_3 == (type_5 *)PTR_id_00413f14) {
      var_5 = (type_4 *)var_4(0x68);
      *(type_2 *)(var_5 + 4) = 0;
      *(type_2 *)(var_5 + 8) = 0;
      *(type_2 *)(var_5 + 0xc) = 0;
      *(type_1 ***)var_5 = &PTR____numpunct_cache_004116cc;
      var_5[0x10] = (type_4)0x0;
      *(type_2 *)(var_5 + 0x14) = 0;
      *(type_2 *)(var_5 + 0x18) = 0;
      *(type_2 *)(var_5 + 0x1c) = 0;
      *(type_2 *)(var_5 + 0x20) = 0;
      *(type_6 *)(var_5 + 0x24) = 0;
      var_5[100] = (type_4)0x0;
      p_Var3 = (type_3 *)var_4(0x14);
      p_Var3->__locales[1] = (type_4 *)0x0;
      p_Var3->__locales[2] = var_5;
      p_Var3->__locales[0] = (type_4 *)&PTR__numpunct_00413584;
                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */
      var_6<var_7>::var_8((var_6<var_7> *)p_Var3,(type_3 *)0x0);
      p_Var3->__locales[3] = (type_4 *)var_10;
      if (var_9 == (type_1 *)0x0) {
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
        var_12();
      }
      p_Var3->__locales[0] = (type_4 *)&PTR__numpunct_shim_00411f98;
      p_Var3->__locales[4] = var_5;
                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */
      __facet_shims::var_13<var_7>(0,var_10,var_5);
      return p_Var3;
    }
    if (var_3 == (type_5 *)PTR_id_00413f3c) {
      p_Var3 = (type_3 *)var_4(0x10);
      p_Var3->__locales[1] = (type_4 *)0x0;
      p_Var3->__locales[0] = (type_4 *)&PTR__collate_0041354c;
                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */
      var_5 = (type_4 *)var_14();
      p_Var3->__locales[2] = var_5;
      p_Var3->__locales[3] = (type_4 *)var_10;
      if (var_9 == (type_1 *)0x0) {
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
        var_12();
      }
      p_Var3->__locales[0] = (type_4 *)&PTR__collate_shim_00411fbc;
    }
    else if (var_3 == (type_5 *)PTR_id_00413d24) {
      p_Var3 = (type_3 *)var_4(0xc);
      var_15 = var_9;
      p_Var3->__locales[1] = (type_4 *)0x0;
      p_Var3->__locales[0] = (type_4 *)&PTR__time_get_004136e8;
      p_Var3->__locales[2] = (type_4 *)var_10;
      if (var_15 == (type_1 *)0x0) {
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
        var_12();
      }
      p_Var3->__locales[0] = (type_4 *)&PTR__time_get_shim_004120e8;
    }
    else if (var_3 == (type_5 *)PTR_id_00413bc8) {
      p_Var3 = (type_3 *)var_4(0xc);
      var_15 = var_9;
      p_Var3->__locales[1] = (type_4 *)0x0;
      p_Var3->__locales[0] = (type_4 *)&PTR__money_get_004136b8;
      p_Var3->__locales[2] = (type_4 *)var_10;
      if (var_15 == (type_1 *)0x0) {
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
        var_12();
      }
      p_Var3->__locales[0] = (type_4 *)&PTR__money_get_shim_0040a308;
    }
    else {
      if (var_3 != (type_5 *)PTR_id_00413e4c) {
        if (var_3 == (type_5 *)PTR_id_00413bb4) {
          var_5 = (type_4 *)var_4(0x44);
          *(type_2 *)(var_5 + 4) = 0;
          *(type_2 *)(var_5 + 8) = 0;
          *(type_1 ***)var_5 = &PTR____moneypunct_cache_004116bc;
          *(type_2 *)(var_5 + 0xc) = 0;
          *(type_6 *)(var_5 + 0x10) = 0;
          var_5[0x12] = (type_4)0x0;
          *(type_2 *)(var_5 + 0x14) = 0;
          *(type_2 *)(var_5 + 0x18) = 0;
          *(type_2 *)(var_5 + 0x1c) = 0;
          *(type_2 *)(var_5 + 0x20) = 0;
          *(type_2 *)(var_5 + 0x24) = 0;
          *(type_2 *)(var_5 + 0x28) = 0;
          *(type_2 *)(var_5 + 0x2c) = 0;
          *(type_2 *)(var_5 + 0x30) = 0;
          *(type_2 *)(var_5 + 0x34) = 0;
          var_5[0x43] = (type_4)0x0;
          p_Var3 = (type_3 *)var_4(0x14);
          p_Var3->__locales[1] = (type_4 *)0x0;
          p_Var3->__locales[2] = var_5;
          p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_004135cc;
                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */
          var_16<var_7,true>::var_17(p_Var3,(char *)0x0);
          p_Var3->__locales[3] = (type_4 *)var_10;
          if (var_9 == (type_1 *)0x0) {
            *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
          }
          else {
            var_11();
            *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
            var_12();
          }
          p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_shim_00411fd8;
          p_Var3->__locales[4] = var_5;
                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */
          __facet_shims::var_18<var_7,true>(0,var_10,var_5);
        }
        else {
          if (var_3 != (type_5 *)PTR_id_00413e9c) {
            if (var_3 == (type_5 *)PTR_id_00413c90) {
              p_Var3 = (type_3 *)var_4(0x14);
                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */
              var_19<var_7>::var_19((var_19<var_7> *)p_Var3,0);
              var_15 = var_9;
              p_Var3->__locales[4] = (type_4 *)var_10;
              if (var_15 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__messages_shim_0040a338;
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413e34) {
              var_5 = (type_4 *)var_4(0x128);
              *(type_2 *)(var_5 + 4) = 0;
              *(type_2 *)(var_5 + 8) = 0;
              *(type_2 *)(var_5 + 0xc) = 0;
              *(type_1 ***)var_5 = &PTR____numpunct_cache_0041278c;
              var_5[0x10] = (type_4)0x0;
              *(type_2 *)(var_5 + 0x14) = 0;
              *(type_2 *)(var_5 + 0x18) = 0;
              *(type_2 *)(var_5 + 0x1c) = 0;
              *(type_2 *)(var_5 + 0x20) = 0;
              *(type_2 *)(var_5 + 0x24) = 0;
              *(type_2 *)(var_5 + 0x28) = 0;
              var_5[0x124] = (type_4)0x0;
              p_Var3 = (type_3 *)var_4(0x14);
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[2] = var_5;
              p_Var3->__locales[0] = (type_4 *)&PTR__numpunct_0041327c;
                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */
              var_6<var_20>::var_8
                        ((var_6<var_20> *)p_Var3,(type_3 *)0x0);
              p_Var3->__locales[3] = (type_4 *)var_10;
              if (var_9 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__numpunct_shim_00412040;
              p_Var3->__locales[4] = var_5;
                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */
              __facet_shims::var_13<var_20>(0,var_10,var_5);
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413e58) {
              p_Var3 = (type_3 *)var_4(0x10);
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[0] = (type_4 *)&PTR__collate_00413244;
                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */
              var_5 = (type_4 *)var_14();
              p_Var3->__locales[2] = var_5;
              p_Var3->__locales[3] = (type_4 *)var_10;
              if (var_9 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__collate_shim_00412064;
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413c08) {
              p_Var3 = (type_3 *)var_4(0xc);
              var_15 = var_9;
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[0] = (type_4 *)&PTR__time_get_004133e0;
              p_Var3->__locales[2] = (type_4 *)var_10;
              if (var_15 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__time_get_shim_00412114;
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413eb8) {
              p_Var3 = (type_3 *)var_4(0xc);
              var_15 = var_9;
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[0] = (type_4 *)&PTR__money_get_004133b0;
              p_Var3->__locales[2] = (type_4 *)var_10;
              if (var_15 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__money_get_shim_0040a354;
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413fb4) {
              p_Var3 = (type_3 *)var_4(0xc);
              var_15 = var_9;
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[0] = (type_4 *)&PTR__money_put_004133c8;
              p_Var3->__locales[2] = (type_4 *)var_10;
              if (var_15 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__money_put_shim_0040a36c;
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413dd4) {
              var_5 = (type_4 *)var_4(0x70);
              *(type_2 *)(var_5 + 4) = 0;
              *(type_2 *)(var_5 + 8) = 0;
              *(type_2 *)(var_5 + 0xc) = 0;
              *(type_1 ***)var_5 = &PTR____moneypunct_cache_004127b4;
              var_5[0x10] = (type_4)0x0;
              *(type_2 *)(var_5 + 0x14) = 0;
              *(type_2 *)(var_5 + 0x18) = 0;
              *(type_2 *)(var_5 + 0x1c) = 0;
              *(type_2 *)(var_5 + 0x20) = 0;
              *(type_2 *)(var_5 + 0x24) = 0;
              *(type_2 *)(var_5 + 0x28) = 0;
              *(type_2 *)(var_5 + 0x2c) = 0;
              *(type_2 *)(var_5 + 0x30) = 0;
              *(type_2 *)(var_5 + 0x34) = 0;
              *(type_2 *)(var_5 + 0x38) = 0;
              *(type_2 *)(var_5 + 0x3c) = 0;
              var_5[0x6c] = (type_4)0x0;
              p_Var3 = (type_3 *)var_4(0x14);
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[2] = var_5;
              p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_004132c4;
                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */
              var_16<var_20,true>::var_17(p_Var3,(char *)0x0);
              p_Var3->__locales[3] = (type_4 *)var_10;
              if (var_9 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_shim_00412080;
              p_Var3->__locales[4] = var_5;
                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */
              __facet_shims::var_18<var_20,true>(0,var_10,var_5);
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413ef0) {
              var_5 = (type_4 *)var_4(0x70);
              *(type_2 *)(var_5 + 4) = 0;
              *(type_2 *)(var_5 + 8) = 0;
              *(type_2 *)(var_5 + 0xc) = 0;
              *(type_1 ***)var_5 = &PTR____moneypunct_cache_004127c4;
              var_5[0x10] = (type_4)0x0;
              *(type_2 *)(var_5 + 0x14) = 0;
              *(type_2 *)(var_5 + 0x18) = 0;
              *(type_2 *)(var_5 + 0x1c) = 0;
              *(type_2 *)(var_5 + 0x20) = 0;
              *(type_2 *)(var_5 + 0x24) = 0;
              *(type_2 *)(var_5 + 0x28) = 0;
              *(type_2 *)(var_5 + 0x2c) = 0;
              *(type_2 *)(var_5 + 0x30) = 0;
              *(type_2 *)(var_5 + 0x34) = 0;
              *(type_2 *)(var_5 + 0x38) = 0;
              *(type_2 *)(var_5 + 0x3c) = 0;
              var_5[0x6c] = (type_4)0x0;
              p_Var3 = (type_3 *)var_4(0x14);
              p_Var3->__locales[1] = (type_4 *)0x0;
              p_Var3->__locales[2] = var_5;
              p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_004132f8;
                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */
              var_16<var_20,false>::var_17(p_Var3,(char *)0x0);
              p_Var3->__locales[3] = (type_4 *)var_10;
              if (var_9 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_shim_004120b4;
              p_Var3->__locales[4] = var_5;
                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */
              __facet_shims::var_18<var_20,false>(0,var_10,var_5);
              return p_Var3;
            }
            if (var_3 == (type_5 *)PTR_id_00413df4) {
              p_Var3 = (type_3 *)var_4(0x14);
                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */
              var_19<var_20>::var_19((var_19<var_20> *)p_Var3,0);
              var_15 = var_9;
              p_Var3->__locales[4] = (type_4 *)var_10;
              if (var_15 == (type_1 *)0x0) {
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
              }
              else {
                var_11();
                *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
                var_12();
              }
              p_Var3->__locales[0] = (type_4 *)&PTR__messages_shim_0040a384;
              return p_Var3;
            }
                    /* WARNING: Subroutine does not return */
            var_21("cannot create shim for unknown locale::facet");
          }
          var_5 = (type_4 *)var_4(0x44);
          *(type_6 *)(var_5 + 0x10) = 0;
          *(type_2 *)(var_5 + 4) = 0;
          *(type_1 ***)var_5 = &PTR____moneypunct_cache_004116ac;
          *(type_2 *)(var_5 + 8) = 0;
          *(type_2 *)(var_5 + 0xc) = 0;
          var_5[0x12] = (type_4)0x0;
          *(type_2 *)(var_5 + 0x14) = 0;
          *(type_2 *)(var_5 + 0x18) = 0;
          *(type_2 *)(var_5 + 0x1c) = 0;
          *(type_2 *)(var_5 + 0x20) = 0;
          *(type_2 *)(var_5 + 0x24) = 0;
          *(type_2 *)(var_5 + 0x28) = 0;
          *(type_2 *)(var_5 + 0x2c) = 0;
          *(type_2 *)(var_5 + 0x30) = 0;
          *(type_2 *)(var_5 + 0x34) = 0;
          var_5[0x43] = (type_4)0x0;
          p_Var3 = (type_3 *)var_4(0x14);
          p_Var3->__locales[1] = (type_4 *)0x0;
          p_Var3->__locales[2] = var_5;
          p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_00413600;
                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */
          var_16<var_7,false>::var_17(p_Var3,(char *)0x0);
          var_15 = var_9;
          p_Var3->__locales[3] = (type_4 *)var_10;
          if (var_15 == (type_1 *)0x0) {
            *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
          }
          else {
            var_11();
            *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
            var_12();
          }
          p_Var3->__locales[0] = (type_4 *)&PTR__moneypunct_shim_0041200c;
          p_Var3->__locales[4] = var_5;
                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */
          __facet_shims::var_18<var_7,false>(0,var_10,var_5);
        }
        return p_Var3;
      }
      p_Var3 = (type_3 *)var_4(0xc);
      var_15 = var_9;
      p_Var3->__locales[1] = (type_4 *)0x0;
      p_Var3->__locales[0] = (type_4 *)&PTR__money_put_004136d0;
      p_Var3->__locales[2] = (type_4 *)var_10;
      if (var_15 == (type_1 *)0x0) {
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
      }
      else {
        var_11();
        *(int *)(var_10 + 4) = *(int *)(var_10 + 4) + 1;
        var_12();
      }
      p_Var3->__locales[0] = (type_4 *)&PTR__money_put_shim_0040a320;
    }
  }
  else {
    p_Var3 = (type_3 *)*var_2;
  }
  return p_Var3;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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) (identifier) (identifier) (number_literal)))))) (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: (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: (identifier)) right: (pointer_expression argument: (identifier)))) (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: (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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier)))) (return_statement (identifier)))) (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: (subscript_expression argument: (identifier) index: (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: (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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) 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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (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: (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: (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: (primitive_type)) 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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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 (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (return_statement (identifier)))) (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: (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: (identifier)) right: (pointer_expression argument: (identifier)))) (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: (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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier)))) (return_statement (identifier)))) (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: (subscript_expression argument: (identifier) index: (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: (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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) 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)))) (return_statement (identifier)))) (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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)))) (return_statement (identifier)))) (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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)))) (return_statement (identifier)))) (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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)))) (return_statement (identifier)))) (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: (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: (identifier)) right: (pointer_expression argument: (identifier)))) (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: (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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier)))) (return_statement (identifier)))) (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: (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: (identifier)) right: (pointer_expression argument: (identifier)))) (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: (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: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier)))) (return_statement (identifier)))) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (return_statement (identifier)))) (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 (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: (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: (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: (primitive_type)) 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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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 (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier))))))) (return_statement (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 (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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 (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)))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 * MASKED(int param_1,undefined *param_2)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  puVar2 = (undefined4 *)FUN_00290300(param_1,PTR_PTR_00413bac,PTR_PTR_00413f2c,0xfffffffe);
  if (puVar2 == (undefined4 *)0x0) {
    if (param_2 == PTR_DAT_00413f14) {
      puVar2 = (undefined4 *)FUN_00246670(0x68);
      puVar2[1] = 0;
      puVar2[2] = 0;
      puVar2[3] = 0;
      *puVar2 = &PTR_FUN_004116cc;
      *(undefined1 *)(puVar2 + 4) = 0;
      puVar2[5] = 0;
      puVar2[6] = 0;
      puVar2[7] = 0;
      puVar2[8] = 0;
      *(undefined2 *)(puVar2 + 9) = 0;
      *(undefined1 *)(puVar2 + 0x19) = 0;
      puVar4 = (undefined4 *)FUN_00246670(0x14);
      puVar4[1] = 0;
      puVar4[2] = puVar2;
      *puVar4 = &PTR_FUN_00413584;
                    /* try { // try from 00286c14 to 00286c18 has its CatchHandler @ 002874b8 */
      FUN_00291e90(puVar4,0);
      puVar4[3] = param_1;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar4 = &PTR_FUN_00411f98;
      puVar4[4] = puVar2;
                    /* try { // try from 00286c51 to 00286c55 has its CatchHandler @ 00287518 */
      FUN_00289dd0(0,param_1,puVar2);
      return puVar4;
    }
    if (param_2 == PTR_DAT_00413f3c) {
      puVar2 = (undefined4 *)FUN_00246670(0x10);
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_0041354c;
                    /* try { // try from 00286d31 to 00286d35 has its CatchHandler @ 00287510 */
      uVar3 = FUN_0024a700();
      puVar2[2] = uVar3;
      puVar2[3] = param_1;
      if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_00411fbc;
    }
    else if (param_2 == PTR_DAT_00413d24) {
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136e8;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_004120e8;
    }
    else if (param_2 == PTR_DAT_00413bc8) {
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136b8;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_0040a308;
    }
    else {
      if (param_2 != PTR_DAT_00413e4c) {
        if (param_2 == PTR_DAT_00413bb4) {
          puVar2 = (undefined4 *)FUN_00246670(0x44);
          puVar2[1] = 0;
          puVar2[2] = 0;
          *puVar2 = &PTR_FUN_004116bc;
          puVar2[3] = 0;
          *(undefined2 *)(puVar2 + 4) = 0;
          *(undefined1 *)((int)puVar2 + 0x12) = 0;
          puVar2[5] = 0;
          puVar2[6] = 0;
          puVar2[7] = 0;
          puVar2[8] = 0;
          puVar2[9] = 0;
          puVar2[10] = 0;
          puVar2[0xb] = 0;
          puVar2[0xc] = 0;
          puVar2[0xd] = 0;
          *(undefined1 *)((int)puVar2 + 0x43) = 0;
          puVar4 = (undefined4 *)FUN_00246670(0x14);
          puVar4[1] = 0;
          puVar4[2] = puVar2;
          *puVar4 = &PTR_FUN_004135cc;
                    /* try { // try from 00286eba to 00286ebe has its CatchHandler @ 002874e8 */
          FUN_00292480(puVar4,0,0);
          puVar4[3] = param_1;
          if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
            UNLOCK();
          }
          *puVar4 = &PTR_FUN_00411fd8;
          puVar4[4] = puVar2;
                    /* try { // try from 00286ef7 to 00286efb has its CatchHandler @ 00287520 */
          FUN_0028a5b0(0,param_1,puVar2);
        }
        else {
          if (param_2 != PTR_DAT_00413e9c) {
            if (param_2 == PTR_DAT_00413c90) {
              puVar2 = (undefined4 *)FUN_00246670(0x14);
                    /* try { // try from 00287031 to 00287035 has its CatchHandler @ 002874f8 */
              FUN_002c4d10(puVar2,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[4] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a338;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413e34) {
              puVar2 = (undefined4 *)FUN_00246670(0x128);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_0041278c;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              *(undefined1 *)(puVar2 + 0x49) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_0041327c;
                    /* try { // try from 00287106 to 0028710a has its CatchHandler @ 002874c8 */
              FUN_002921a0(puVar4,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_00412040;
              puVar4[4] = puVar2;
                    /* try { // try from 00287143 to 00287147 has its CatchHandler @ 002874f0 */
              FUN_0028a060(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413e58) {
              puVar2 = (undefined4 *)FUN_00246670(0x10);
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_00413244;
                    /* try { // try from 00286cdd to 00286ce1 has its CatchHandler @ 002874d8 */
              uVar3 = FUN_0024a700();
              puVar2[2] = uVar3;
              puVar2[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_00412064;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413c08) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133e0;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_00412114;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413eb8) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133b0;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a354;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413fb4) {
              puVar2 = (undefined4 *)FUN_00246670(0xc);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[1] = 0;
              *puVar2 = &PTR_FUN_004133c8;
              puVar2[2] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a36c;
              return puVar2;
            }
            if (param_2 == PTR_DAT_00413dd4) {
              puVar2 = (undefined4 *)FUN_00246670(0x70);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_004127b4;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              puVar2[0xb] = 0;
              puVar2[0xc] = 0;
              puVar2[0xd] = 0;
              puVar2[0xe] = 0;
              puVar2[0xf] = 0;
              *(undefined1 *)(puVar2 + 0x1b) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_004132c4;
                    /* try { // try from 00287314 to 00287318 has its CatchHandler @ 002874d0 */
              FUN_002931a0(puVar4,0,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_00412080;
              puVar4[4] = puVar2;
                    /* try { // try from 00287351 to 00287355 has its CatchHandler @ 002874e0 */
              FUN_0028acb0(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413ef0) {
              puVar2 = (undefined4 *)FUN_00246670(0x70);
              puVar2[1] = 0;
              puVar2[2] = 0;
              puVar2[3] = 0;
              *puVar2 = &PTR_FUN_004127c4;
              *(undefined1 *)(puVar2 + 4) = 0;
              puVar2[5] = 0;
              puVar2[6] = 0;
              puVar2[7] = 0;
              puVar2[8] = 0;
              puVar2[9] = 0;
              puVar2[10] = 0;
              puVar2[0xb] = 0;
              puVar2[0xc] = 0;
              puVar2[0xd] = 0;
              puVar2[0xe] = 0;
              puVar2[0xf] = 0;
              *(undefined1 *)(puVar2 + 0x1b) = 0;
              puVar4 = (undefined4 *)FUN_00246670(0x14);
              puVar4[1] = 0;
              puVar4[2] = puVar2;
              *puVar4 = &PTR_FUN_004132f8;
                    /* try { // try from 00287429 to 0028742d has its CatchHandler @ 002874a8 */
              FUN_00293770(puVar4,0,0);
              puVar4[3] = param_1;
              if (PTR___pthread_key_create_00413ff8 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar4 = &PTR_FUN_004120b4;
              puVar4[4] = puVar2;
                    /* try { // try from 00287462 to 00287466 has its CatchHandler @ 00287500 */
              FUN_0028b0e0(0,param_1,puVar2);
              return puVar4;
            }
            if (param_2 == PTR_DAT_00413df4) {
              puVar2 = (undefined4 *)FUN_00246670(0x14);
                    /* try { // try from 00286b59 to 00286b5d has its CatchHandler @ 002874c0 */
              FUN_002b64f0(puVar2,0);
              puVar1 = PTR___pthread_key_create_00413ff8;
              puVar2[4] = param_1;
              if (puVar1 == (undefined *)0x0) {
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
              }
              else {
                LOCK();
                *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
                UNLOCK();
              }
              *puVar2 = &PTR_FUN_0040a384;
              return puVar2;
            }
                    /* WARNING: Subroutine does not return */
            FUN_0028db20("cannot create shim for unknown locale::facet");
          }
          puVar2 = (undefined4 *)FUN_00246670(0x44);
          *(undefined2 *)(puVar2 + 4) = 0;
          puVar2[1] = 0;
          *puVar2 = &PTR_FUN_004116ac;
          puVar2[2] = 0;
          puVar2[3] = 0;
          *(undefined1 *)((int)puVar2 + 0x12) = 0;
          puVar2[5] = 0;
          puVar2[6] = 0;
          puVar2[7] = 0;
          puVar2[8] = 0;
          puVar2[9] = 0;
          puVar2[10] = 0;
          puVar2[0xb] = 0;
          puVar2[0xc] = 0;
          puVar2[0xd] = 0;
          *(undefined1 *)((int)puVar2 + 0x43) = 0;
          puVar4 = (undefined4 *)FUN_00246670(0x14);
          puVar4[1] = 0;
          puVar4[2] = puVar2;
          *puVar4 = &PTR_FUN_00413600;
                    /* try { // try from 00286fc2 to 00286fc6 has its CatchHandler @ 002874b0 */
          FUN_002929c0(puVar4,0,0);
          puVar1 = PTR___pthread_key_create_00413ff8;
          puVar4[3] = param_1;
          if (puVar1 == (undefined *)0x0) {
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
          }
          else {
            LOCK();
            *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
            UNLOCK();
          }
          *puVar4 = &PTR_FUN_0041200c;
          puVar4[4] = puVar2;
                    /* try { // try from 00286fff to 00287003 has its CatchHandler @ 00287508 */
          FUN_0028a930(0,param_1,puVar2);
        }
        return puVar4;
      }
      puVar2 = (undefined4 *)FUN_00246670(0xc);
      puVar1 = PTR___pthread_key_create_00413ff8;
      puVar2[1] = 0;
      *puVar2 = &PTR_FUN_004136d0;
      puVar2[2] = param_1;
      if (puVar1 == (undefined *)0x0) {
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      }
      else {
        LOCK();
        *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
        UNLOCK();
      }
      *puVar2 = &PTR_FUN_0040a320;
    }
  }
  else {
    puVar2 = (undefined4 *)*puVar2;
  }
  return puVar2;
}

