
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::locale::_Impl::_M_init_extra(void*, void*, char const*, char const*) */

void std::locale::_Impl::_M_init_extra(void *param_1,void *param_2,char *param_3,char *param_4)

{
  int iVar1;
  undefined *puVar2;
  numpunct<char> *this;
  int iVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  __locale_struct *p_Var6;
  messages<char> *this_00;
  numpunct<wchar_t> *this_01;
  messages<wchar_t> *this_02;
  __locale_struct *local_20 [4];
  
  this = (numpunct<char> *)operator_new(0xc);
  *(undefined4 *)(this + 4) = 0;
  *(undefined4 *)(this + 8) = 0;
  *(undefined ***)this = &PTR__numpunct_003a73cc;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */
  numpunct<char>::_M_initialize_numpunct(this,*param_2);
  puVar2 = PTR___pthread_key_create_003a9f3c;
  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {
    *(int *)(this + 4) = *(int *)(this + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(this + 4) = *(int *)(this + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e20);
  *(numpunct<char> **)(iVar1 + iVar3 * 4) = this;
  puVar4 = (undefined4 *)operator_new(0xc);
  puVar4[1] = 0;
                    /* WARNING: Load size is inaccurate */
  local_20[0] = *param_2;
  *puVar4 = &PTR__collate_003a7394;
  uVar5 = facet::_S_clone_c_locale(local_20);
  puVar4[2] = uVar5;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = puVar4[1] + 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e7c);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  p_Var6 = (__locale_struct *)operator_new(0xc);
  p_Var6->__locales[1] = (__locale_data *)0x0;
  p_Var6->__locales[2] = (__locale_data *)0x0;
  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */
  moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2);
  if (puVar2 == (undefined *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    LOCK();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bfc);
  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;
  p_Var6 = (__locale_struct *)operator_new(0xc);
  p_Var6->__locales[1] = (__locale_data *)0x0;
  p_Var6->__locales[2] = (__locale_data *)0x0;
  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */
  moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2);
  if (puVar2 == (undefined *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    LOCK();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ed4);
  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_get_003a75e4;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fbc);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_put_003a75fc;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9d08);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__time_get_003a763c;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e1c);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  this_00 = (messages<char> *)operator_new(0x10);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */
  messages<char>::messages(this_00,*param_2,param_4,0);
  if (puVar2 == (undefined *)0x0) {
    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e00);
  *(messages<char> **)(iVar1 + iVar3 * 4) = this_00;
  this_01 = (numpunct<wchar_t> *)operator_new(0xc);
  *(undefined4 *)(this_01 + 4) = 0;
  *(undefined4 *)(this_01 + 8) = 0;
  *(undefined ***)this_01 = &PTR__numpunct_003a8ce0;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */
  numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2);
  if (puVar2 == (undefined *)0x0) {
    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ee8);
  *(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01;
  puVar4 = (undefined4 *)operator_new(0xc);
  puVar4[1] = 0;
                    /* WARNING: Load size is inaccurate */
  local_20[0] = *param_2;
  *puVar4 = &PTR__collate_003a8c68;
  uVar5 = facet::_S_clone_c_locale(local_20);
  puVar4[2] = uVar5;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = puVar4[1] + 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bd8);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  p_Var6 = (__locale_struct *)operator_new(0xc);
  p_Var6->__locales[1] = (__locale_data *)0x0;
  p_Var6->__locales[2] = (__locale_data *)0x0;
  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8;
                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */
  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);
  if (puVar2 == (undefined *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    LOCK();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9db0);
  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;
  p_Var6 = (__locale_struct *)operator_new(0xc);
  p_Var6->__locales[1] = (__locale_data *)0x0;
  p_Var6->__locales[2] = (__locale_data *)0x0;
  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4;
                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */
  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);
  if (puVar2 == (undefined *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    LOCK();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9c5c);
  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_get_003a8ef8;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9f1c);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_put_003a8f10;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc4);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  puVar4 = (undefined4 *)operator_new(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__time_get_003a8f50;
  if (puVar2 == (undefined *)0x0) {
    puVar4[1] = 1;
  }
  else {
    LOCK();
    puVar4[1] = puVar4[1] + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc8);
  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;
  this_02 = (messages<wchar_t> *)operator_new(0x10);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */
  messages<wchar_t>::messages(this_02,*param_2,param_4,0);
  if (puVar2 == (undefined *)0x0) {
    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)((int)param_1 + 4);
  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bb0);
  *(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02;
  return;
}



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

void FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 local_20 [4];
  
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a73cc;
                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */
  FUN_00248ea0(puVar2,*param_2);
  puVar1 = PTR___pthread_key_create_003a9f3c;
  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  local_20[0] = *param_2;
  *puVar2 = &PTR_FUN_003a7394;
  uVar4 = FUN_00245520(local_20);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a74d4;
                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */
  FUN_00249d20(puVar2,*param_2,0);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a74a0;
                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */
  FUN_002497e0(puVar2,*param_2,0);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a75e4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a75fc;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a763c;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  iVar5 = FUN_001fb470(0x10);
                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */
  FUN_00211870(iVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
    UNLOCK();
  }
  iVar3 = *(int *)(param_1 + 4);
  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);
  *(int *)(iVar3 + iVar6 * 4) = iVar5;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8ce0;
                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */
  FUN_002491b0(puVar2,*param_2);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  local_20[0] = *param_2;
  *puVar2 = &PTR_FUN_003a8c68;
  uVar4 = FUN_00245520(local_20);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8de8;
                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */
  FUN_0024aad0(puVar2,*param_3,param_5);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8db4;
                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */
  FUN_0024a500(puVar2,*param_3,param_5);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8ef8;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8f10;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8f50;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  iVar5 = FUN_001fb470(0x10);
                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */
  FUN_00251c60(iVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
    UNLOCK();
  }
  iVar3 = *(int *)(param_1 + 4);
  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);
  *(int *)(iVar3 + iVar6 * 4) = iVar5;
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x00049ed6
ADD ESI,0x127176
PUSH EBX
SUB ESP,0x38
PUSH 0xc
MOV EBX,ESI
CALL 0x001fb470
MOV dword ptr [EAX + 0x4],0x0
MOV ECX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd3c4]
MOV dword ptr [ECX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [ECX],EAX
POP EAX
MOV EAX,dword ptr [EBP + 0xc]
POP EDX
PUSH dword ptr [EAX]
PUSH ECX
CALL 0x00248ea0
MOV EDI,dword ptr [ESI + 0xffffff3c]
ADD ESP,0x10
TEST EDI,EDI
JZ 0x002834d0
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffe20]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0xc
CALL 0x001fb470
MOV EDX,EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [EDX + 0x4],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x2c],EDX
MOV dword ptr [EBP + -0x1c],EAX
LEA EAX,[ESI + 0xffffd38c]
ADD EAX,0x8
MOV dword ptr [EDX],EAX
LEA EAX,[EBP + -0x1c]
MOV dword ptr [ESP],EAX
MOV dword ptr [EBP + -0x30],EAX
CALL 0x00245520
MOV EDX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
MOV dword ptr [EDX + 0x8],EAX
TEST EDI,EDI
JZ 0x002835c0
ADD.LOCK dword ptr [EDX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffe7c]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0xc
CALL 0x001fb470
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV ECX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd4cc]
MOV dword ptr [ECX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBP + 0xc]
PUSH 0x0
PUSH dword ptr [EAX]
PUSH ECX
CALL 0x00249d20
ADD ESP,0x10
TEST EDI,EDI
JZ 0x002835b0
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffbfc]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV ECX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0xc
CALL 0x001fb470
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV ECX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd498]
MOV dword ptr [ECX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBP + 0xc]
PUSH 0x0
PUSH dword ptr [EAX]
PUSH ECX
CALL 0x002497e0
ADD ESP,0x10
TEST EDI,EDI
JZ 0x002835a0
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffed4]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV EBX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd5dc]
ADD EAX,0x8
MOV dword ptr [EBX],EAX
TEST EDI,EDI
JZ 0x00283590
ADD.LOCK dword ptr [EBX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xffffffbc]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EDX,dword ptr [EBP + -0x34]
MOV ECX,dword ptr [EBP + -0x2c]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV EDX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd5f4]
ADD EAX,0x8
MOV dword ptr [EDX],EAX
TEST EDI,EDI
JZ 0x00283580
ADD.LOCK dword ptr [EDX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffd08]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV ECX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffd634]
ADD EAX,0x8
MOV dword ptr [ECX],EAX
TEST EDI,EDI
JZ 0x00283570
ADD.LOCK dword ptr [ECX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffe1c]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EDX,dword ptr [EBP + -0x34]
MOV ECX,dword ptr [EBP + -0x2c]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0x10
CALL 0x001fb470
MOV EDX,dword ptr [EBP + 0xc]
ADD ESP,0x10
PUSH 0x0
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EDX]
PUSH EAX
MOV dword ptr [EBP + -0x2c],EAX
CALL 0x00211870
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x2c]
TEST EDI,EDI
JZ 0x00283560
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffe00]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0xc
CALL 0x001fb470
MOV dword ptr [EAX + 0x4],0x0
MOV EBX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffecd8]
MOV dword ptr [EBX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EBX],EAX
POP EAX
MOV EAX,dword ptr [EBP + 0xc]
POP EDX
PUSH dword ptr [EAX]
PUSH EBX
MOV EBX,ESI
CALL 0x002491b0
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00283550
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffee8]
MOV dword ptr [EBP + -0x34],EDX
CALL 0x001ff9b0
MOV ECX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x34]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0xc
CALL 0x001fb470
MOV ECX,EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [ECX + 0x4],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x2c],ECX
MOV dword ptr [EBP + -0x1c],EAX
LEA EAX,[ESI + 0xffffec60]
ADD EAX,0x8
MOV dword ptr [ECX],EAX
POP ECX
PUSH dword ptr [EBP + -0x30]
CALL 0x00245520
MOV ECX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
MOV dword ptr [ECX + 0x8],EAX
TEST EDI,EDI
JZ 0x00283540
ADD.LOCK dword ptr [ECX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffbd8]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0xc
CALL 0x001fb470
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV ECX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffede0]
MOV dword ptr [ECX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EAX]
PUSH ECX
CALL 0x0024aad0
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00283530
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffdb0]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV ECX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0xc
CALL 0x001fb470
ADD ESP,0xc
MOV dword ptr [EAX + 0x4],0x0
MOV EBX,EAX
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffedac]
MOV dword ptr [EBX + 0x8],0x0
ADD EAX,0x8
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EAX]
PUSH EBX
MOV EBX,ESI
CALL 0x0024a500
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00283520
MOV EAX,dword ptr [EBP + -0x2c]
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffc5c]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV EBX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffeef0]
ADD EAX,0x8
MOV dword ptr [EBX],EAX
TEST EDI,EDI
JZ 0x00283510
ADD.LOCK dword ptr [EBX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xffffff1c]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EDX,dword ptr [EBP + -0x30]
MOV ECX,dword ptr [EBP + -0x2c]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV EDX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffef08]
ADD EAX,0x8
MOV dword ptr [EDX],EAX
TEST EDI,EDI
JZ 0x00283500
ADD.LOCK dword ptr [EDX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xffffffc4]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EBX,dword ptr [EBP + -0x2c]
MOV EDX,dword ptr [EBP + -0x30]
MOV dword ptr [EDX + EAX*0x4],EBX
MOV EBX,ESI
MOV dword ptr [ESP],0x8
CALL 0x001fb470
ADD ESP,0x10
MOV ECX,EAX
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xffffef48]
ADD EAX,0x8
MOV dword ptr [ECX],EAX
TEST EDI,EDI
JZ 0x002834f0
ADD.LOCK dword ptr [ECX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xffffffc8]
MOV dword ptr [EBP + -0x30],EDX
CALL 0x001ff9b0
MOV EDX,dword ptr [EBP + -0x30]
MOV ECX,dword ptr [EBP + -0x2c]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV dword ptr [ESP],0x10
CALL 0x001fb470
MOV EDX,dword ptr [EBP + 0xc]
ADD ESP,0x10
PUSH 0x0
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EDX]
PUSH EAX
MOV dword ptr [EBP + -0x2c],EAX
CALL 0x00251c60
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x2c]
TEST EDI,EDI
JZ 0x002834e0
ADD.LOCK dword ptr [EAX + 0x4],0x1
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDI,dword ptr [EAX + 0x4]
PUSH dword ptr [ESI + 0xfffffbb0]
CALL 0x001ff9b0
MOV ESI,dword ptr [EBP + -0x2c]
ADD ESP,0x10
MOV dword ptr [EDI + EAX*0x4],ESI
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00282ee1
ADD dword ptr [EAX + 0x4],0x1
JMP 0x002834a4
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x00283451
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x002833fa
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x002833a5
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x0028334e
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x002832dc
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x0028326a
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x002831fe
ADD dword ptr [EAX + 0x4],0x1
JMP 0x0028318e
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x00283137
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x002830e0
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EAX + 0x4],0x1
JMP 0x0028308b
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00283034
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00282fc5
MOV EAX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],0x1
JMP 0x00282f54
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}\n\n" comment (function_definition "void FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" primitive_type (function_declarator "FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 local_20 [4];" type_identifier (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a73cc;" (assignment_expression "*puVar2 = &PTR_FUN_003a73cc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a73cc" & identifier)) ;) comment (expression_statement "FUN_00248ea0(puVar2,*param_2);" (call_expression "FUN_00248ea0(puVar2,*param_2)" identifier (argument_list "(puVar2,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_003a9f3c;" (assignment_expression "puVar1 = PTR___pthread_key_create_003a9f3c" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(PTR___pthread_key_create_003a9f3c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003a9f3c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e20)" identifier (argument_list "(PTR_DAT_003a9e20)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar2 = &PTR_FUN_003a7394;" (assignment_expression "*puVar2 = &PTR_FUN_003a7394" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a7394" & identifier)) ;) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" identifier = (call_expression "FUN_00245520(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e7c)" identifier (argument_list "(PTR_DAT_003a9e7c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a74d4;" (assignment_expression "*puVar2 = &PTR_FUN_003a74d4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a74d4" & identifier)) ;) comment (expression_statement "FUN_00249d20(puVar2,*param_2,0);" (call_expression "FUN_00249d20(puVar2,*param_2,0)" identifier (argument_list "(puVar2,*param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bfc)" identifier (argument_list "(PTR_DAT_003a9bfc)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a74a0;" (assignment_expression "*puVar2 = &PTR_FUN_003a74a0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a74a0" & identifier)) ;) comment (expression_statement "FUN_002497e0(puVar2,*param_2,0);" (call_expression "FUN_002497e0(puVar2,*param_2,0)" identifier (argument_list "(puVar2,*param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9ed4)" identifier (argument_list "(PTR_DAT_003a9ed4)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a75e4;" (assignment_expression "*puVar2 = &PTR_FUN_003a75e4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a75e4" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fbc)" identifier (argument_list "(PTR_DAT_003a9fbc)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a75fc;" (assignment_expression "*puVar2 = &PTR_FUN_003a75fc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a75fc" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9d08)" identifier (argument_list "(PTR_DAT_003a9d08)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a763c;" (assignment_expression "*puVar2 = &PTR_FUN_003a763c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a763c" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e1c)" identifier (argument_list "(PTR_DAT_003a9e1c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" identifier = (call_expression "FUN_001fb470(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) comment (expression_statement "FUN_00211870(iVar5,*param_2,param_4,0);" (call_expression "FUN_00211870(iVar5,*param_2,param_4,0)" identifier (argument_list "(iVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" { (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e00)" identifier (argument_list "(PTR_DAT_003a9e00)" ( identifier )))) ;) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" * (cast_expression "(int *)(iVar3 + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar6 * 4)" ( (binary_expression "iVar3 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8ce0;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ce0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8ce0" & identifier)) ;) comment (expression_statement "FUN_002491b0(puVar2,*param_2);" (call_expression "FUN_002491b0(puVar2,*param_2)" identifier (argument_list "(puVar2,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9ee8)" identifier (argument_list "(PTR_DAT_003a9ee8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar2 = &PTR_FUN_003a8c68;" (assignment_expression "*puVar2 = &PTR_FUN_003a8c68" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8c68" & identifier)) ;) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" identifier = (call_expression "FUN_00245520(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bd8)" identifier (argument_list "(PTR_DAT_003a9bd8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8de8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8de8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8de8" & identifier)) ;) comment (expression_statement "FUN_0024aad0(puVar2,*param_3,param_5);" (call_expression "FUN_0024aad0(puVar2,*param_3,param_5)" identifier (argument_list "(puVar2,*param_3,param_5)" ( identifier , (pointer_expression "*param_3" * identifier) , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9db0)" identifier (argument_list "(PTR_DAT_003a9db0)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8db4;" (assignment_expression "*puVar2 = &PTR_FUN_003a8db4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8db4" & identifier)) ;) comment (expression_statement "FUN_0024a500(puVar2,*param_3,param_5);" (call_expression "FUN_0024a500(puVar2,*param_3,param_5)" identifier (argument_list "(puVar2,*param_3,param_5)" ( identifier , (pointer_expression "*param_3" * identifier) , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9c5c)" identifier (argument_list "(PTR_DAT_003a9c5c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8ef8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ef8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8ef8" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9f1c)" identifier (argument_list "(PTR_DAT_003a9f1c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8f10;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f10" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8f10" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc4)" identifier (argument_list "(PTR_DAT_003a9fc4)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8f50;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f50" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8f50" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc8)" identifier (argument_list "(PTR_DAT_003a9fc8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" identifier = (call_expression "FUN_001fb470(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) comment (expression_statement "FUN_00251c60(iVar5,*param_2,param_4,0);" (call_expression "FUN_00251c60(iVar5,*param_2,param_4,0)" identifier (argument_list "(iVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" { (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bb0)" identifier (argument_list "(PTR_DAT_003a9bb0)" ( identifier )))) ;) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" * (cast_expression "(int *)(iVar3 + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar6 * 4)" ( (binary_expression "iVar3 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* std::locale::_Impl::_M_init_extra(void*, void*, char const*, char const*) */\n\nvoid std::locale::_Impl::_M_init_extra(void *param_1,void *param_2,char *param_3,char *param_4)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  numpunct<char> *this;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  __locale_struct *p_Var6;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_20 [4];\n  \n  this = (numpunct<char> *)operator_new(0xc);\n  *(undefined4 *)(this + 4) = 0;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined ***)this = &PTR__numpunct_003a73cc;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  numpunct<char>::_M_initialize_numpunct(this,*param_2);\n  puVar2 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\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  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e20);\n  *(numpunct<char> **)(iVar1 + iVar3 * 4) = this;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a7394;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e7c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bfc);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ed4);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a75e4;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fbc);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a75fc;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9d08);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a763c;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_00 = (messages<char> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e00);\n  *(messages<char> **)(iVar1 + iVar3 * 4) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0xc);\n  *(undefined4 *)(this_01 + 4) = 0;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003a8ce0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ee8);\n  *(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a8c68;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bd8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9db0);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9c5c);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a8ef8;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9f1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a8f10;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc4);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a8f50;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_02 = (messages<wchar_t> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bb0);\n  *(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02;\n  return;\n}\n\n" comment comment (function_definition "void std::locale::_Impl::_M_init_extra(void *param_1,void *param_2,char *param_3,char *param_4)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  numpunct<char> *this;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  __locale_struct *p_Var6;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_20 [4];\n  \n  this = (numpunct<char> *)operator_new(0xc);\n  *(undefined4 *)(this + 4) = 0;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined ***)this = &PTR__numpunct_003a73cc;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  numpunct<char>::_M_initialize_numpunct(this,*param_2);\n  puVar2 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\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  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e20);\n  *(numpunct<char> **)(iVar1 + iVar3 * 4) = this;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a7394;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e7c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bfc);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ed4);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a75e4;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fbc);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a75fc;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9d08);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a763c;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_00 = (messages<char> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e00);\n  *(messages<char> **)(iVar1 + iVar3 * 4) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0xc);\n  *(undefined4 *)(this_01 + 4) = 0;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003a8ce0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ee8);\n  *(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a8c68;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bd8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9db0);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9c5c);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a8ef8;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9f1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a8f10;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc4);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a8f50;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_02 = (messages<wchar_t> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bb0);\n  *(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02;\n  return;\n}" primitive_type (ERROR "std::locale::_Impl::" identifier : : identifier : : identifier : :) (function_declarator "_M_init_extra(void *param_1,void *param_2,char *param_3,char *param_4)" identifier (parameter_list "(void *param_1,void *param_2,char *param_3,char *param_4)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  numpunct<char> *this;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  __locale_struct *p_Var6;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_20 [4];\n  \n  this = (numpunct<char> *)operator_new(0xc);\n  *(undefined4 *)(this + 4) = 0;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined ***)this = &PTR__numpunct_003a73cc;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */\n  numpunct<char>::_M_initialize_numpunct(this,*param_2);\n  puVar2 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\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  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e20);\n  *(numpunct<char> **)(iVar1 + iVar3 * 4) = this;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a7394;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e7c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bfc);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ed4);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a75e4;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fbc);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a75fc;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9d08);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a763c;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_00 = (messages<char> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9e00);\n  *(messages<char> **)(iVar1 + iVar3 * 4) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0xc);\n  *(undefined4 *)(this_01 + 4) = 0;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003a8ce0;\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9ee8);\n  *(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01;\n  puVar4 = (undefined4 *)operator_new(0xc);\n  puVar4[1] = 0;\n                    /* WARNING: Load size is inaccurate */\n  local_20[0] = *param_2;\n  *puVar4 = &PTR__collate_003a8c68;\n  uVar5 = facet::_S_clone_c_locale(local_20);\n  puVar4[2] = uVar5;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bd8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8;\n                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9db0);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  p_Var6 = (__locale_struct *)operator_new(0xc);\n  p_Var6->__locales[1] = (__locale_data *)0x0;\n  p_Var6->__locales[2] = (__locale_data *)0x0;\n  p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4;\n                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);\n  if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9c5c);\n  *(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_get_003a8ef8;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9f1c);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__money_put_003a8f10;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc4);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  puVar4 = (undefined4 *)operator_new(8);\n  puVar4[1] = 0;\n  *puVar4 = &PTR__time_get_003a8f50;\n  if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9fc8);\n  *(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;\n  this_02 = (messages<wchar_t> *)operator_new(0x10);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }\n  iVar1 = *(int *)((int)param_1 + 4);\n  iVar3 = locale::id::_M_id((id *)PTR_id_003a9bb0);\n  *(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "numpunct<char> *this;" (binary_expression "numpunct<char> *this" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*this" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "__locale_struct *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (expression_statement "messages<char> *this_00;" (binary_expression "messages<char> *this_00" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "*this_00" * identifier)) ;) (expression_statement "numpunct<wchar_t> *this_01;" (binary_expression "numpunct<wchar_t> *this_01" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "*this_01" * identifier)) ;) (expression_statement "messages<wchar_t> *this_02;" (binary_expression "messages<wchar_t> *this_02" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "*this_02" * identifier)) ;) (declaration "__locale_struct *local_20 [4];" type_identifier (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (expression_statement "this = (numpunct<char> *)operator_new(0xc);" (assignment_expression "this = (numpunct<char> *)operator_new(0xc)" identifier = (parenthesized_expression "(numpunct<char> *)operator_new(0xc)" ( (binary_expression "numpunct<char> *)operator_new(0xc)" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*)operator_new(0xc)" * (ERROR ")" )) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ))) ;) (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this = &PTR__numpunct_003a73cc;" (assignment_expression "*(undefined ***)this = &PTR__numpunct_003a73cc" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR__numpunct_003a73cc" & identifier)) ;) comment comment (expression_statement "numpunct<char>::_M_initialize_numpunct(this,*param_2);" (binary_expression "numpunct<char>::_M_initialize_numpunct(this,*param_2)" (binary_expression "numpunct<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct(this,*param_2)" identifier (argument_list "(this,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) )))) ;) (expression_statement "puVar2 = PTR___pthread_key_create_003a9f3c;" (assignment_expression "puVar2 = PTR___pthread_key_create_003a9f3c" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\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_003a9f3c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003a9f3c == (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 "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9e20);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9e20);" (call_expression "_M_id((id *)PTR_id_003a9e20)" identifier (argument_list "((id *)PTR_id_003a9e20)" ( (cast_expression "(id *)PTR_id_003a9e20" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(numpunct<char> **)(iVar1 + iVar3 * 4) = this;" (assignment_expression "*(numpunct<char> **)(iVar1 + iVar3 * 4) = this" (pointer_expression "*(numpunct<char> **)(iVar1 + iVar3 * 4)" * (call_expression "(numpunct<char> **)(iVar1 + iVar3 * 4)" (parenthesized_expression "(numpunct<char> **)" ( (binary_expression "numpunct<char> **" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(0xc);" (assignment_expression "puVar4 = (undefined4 *)operator_new(0xc)" identifier = (cast_expression "(undefined4 *)operator_new(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar4 = &PTR__collate_003a7394;" (assignment_expression "*puVar4 = &PTR__collate_003a7394" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__collate_003a7394" & identifier)) ;) (ERROR "uVar5 = facet::" (assignment_expression "uVar5 = facet" identifier = identifier) : :) (expression_statement "_S_clone_c_locale(local_20);" (call_expression "_S_clone_c_locale(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = puVar4[1] + 1;\n  }" { (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9e7c);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9e7c);" (call_expression "_M_id((id *)PTR_id_003a9e7c)" identifier (argument_list "((id *)PTR_id_003a9e7c)" ( (cast_expression "(id *)PTR_id_003a9e7c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var6 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var6 = (__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 "p_Var6->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__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_Var6->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[2]" (field_expression "p_Var6->__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_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4;" (assignment_expression "p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74d4" (subscript_expression "p_Var6->__locales[0]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003a74d4" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003a74d4" & identifier))) ;) comment comment (expression_statement "moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2);" (comma_expression "moneypunct<char,false>::_M_initialize_moneypunct(p_Var6,*param_2)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var6,*param_2)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var6,*param_2)" identifier (argument_list "(p_Var6,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }" { (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9bfc);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9bfc);" (call_expression "_M_id((id *)PTR_id_003a9bfc)" identifier (argument_list "((id *)PTR_id_003a9bfc)" ( (cast_expression "(id *)PTR_id_003a9bfc" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;" (assignment_expression "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6" (pointer_expression "*(__locale_struct **)(iVar1 + iVar3 * 4)" * (cast_expression "(__locale_struct **)(iVar1 + iVar3 * 4)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var6 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var6 = (__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 "p_Var6->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__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_Var6->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[2]" (field_expression "p_Var6->__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_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0;" (assignment_expression "p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a74a0" (subscript_expression "p_Var6->__locales[0]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003a74a0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003a74a0" & identifier))) ;) comment comment (expression_statement "moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2);" (comma_expression "moneypunct<char,true>::_M_initialize_moneypunct(p_Var6,*param_2)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var6,*param_2)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var6,*param_2)" identifier (argument_list "(p_Var6,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }" { (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9ed4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9ed4);" (call_expression "_M_id((id *)PTR_id_003a9ed4)" identifier (argument_list "((id *)PTR_id_003a9ed4)" ( (cast_expression "(id *)PTR_id_003a9ed4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;" (assignment_expression "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6" (pointer_expression "*(__locale_struct **)(iVar1 + iVar3 * 4)" * (cast_expression "(__locale_struct **)(iVar1 + iVar3 * 4)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__money_get_003a75e4;" (assignment_expression "*puVar4 = &PTR__money_get_003a75e4" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__money_get_003a75e4" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9fbc);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9fbc);" (call_expression "_M_id((id *)PTR_id_003a9fbc)" identifier (argument_list "((id *)PTR_id_003a9fbc)" ( (cast_expression "(id *)PTR_id_003a9fbc" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__money_put_003a75fc;" (assignment_expression "*puVar4 = &PTR__money_put_003a75fc" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__money_put_003a75fc" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9d08);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9d08);" (call_expression "_M_id((id *)PTR_id_003a9d08)" identifier (argument_list "((id *)PTR_id_003a9d08)" ( (cast_expression "(id *)PTR_id_003a9d08" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__time_get_003a763c;" (assignment_expression "*puVar4 = &PTR__time_get_003a763c" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__time_get_003a763c" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9e1c);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9e1c);" (call_expression "_M_id((id *)PTR_id_003a9e1c)" identifier (argument_list "((id *)PTR_id_003a9e1c)" ( (cast_expression "(id *)PTR_id_003a9e1c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_00 = (messages<char> *)operator_new(0x10);" (assignment_expression "this_00 = (messages<char> *)operator_new(0x10)" identifier = (parenthesized_expression "(messages<char> *)operator_new(0x10)" ( (binary_expression "messages<char> *)operator_new(0x10)" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "*)operator_new(0x10)" * (ERROR ")" )) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ))) ;) comment comment (expression_statement "messages<char>::messages(this_00,*param_2,param_4,0);" (binary_expression "messages<char>::messages(this_00,*param_2,param_4,0)" (binary_expression "messages<char" identifier < identifier) > (ERROR "::" : :) (call_expression "messages(this_00,*param_2,param_4,0)" identifier (argument_list "(this_00,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal )))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n  }" { (expression_statement "*(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;" (assignment_expression "*(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1" (pointer_expression "*(int *)(this_00 + 4)" * (cast_expression "(int *)(this_00 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 4)" ( (binary_expression "this_00 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_00 + 4) + 1" (pointer_expression "*(int *)(this_00 + 4)" * (cast_expression "(int *)(this_00 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 4)" ( (binary_expression "this_00 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1;" (assignment_expression "*(int *)(this_00 + 4) = *(int *)(this_00 + 4) + 1" (pointer_expression "*(int *)(this_00 + 4)" * (cast_expression "(int *)(this_00 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 4)" ( (binary_expression "this_00 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_00 + 4) + 1" (pointer_expression "*(int *)(this_00 + 4)" * (cast_expression "(int *)(this_00 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 4)" ( (binary_expression "this_00 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9e00);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9e00);" (call_expression "_M_id((id *)PTR_id_003a9e00)" identifier (argument_list "((id *)PTR_id_003a9e00)" ( (cast_expression "(id *)PTR_id_003a9e00" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(messages<char> **)(iVar1 + iVar3 * 4) = this_00;" (assignment_expression "*(messages<char> **)(iVar1 + iVar3 * 4) = this_00" (pointer_expression "*(messages<char> **)(iVar1 + iVar3 * 4)" * (call_expression "(messages<char> **)(iVar1 + iVar3 * 4)" (parenthesized_expression "(messages<char> **)" ( (binary_expression "messages<char> **" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_01 = (numpunct<wchar_t> *)operator_new(0xc);" (assignment_expression "this_01 = (numpunct<wchar_t> *)operator_new(0xc)" identifier = (parenthesized_expression "(numpunct<wchar_t> *)operator_new(0xc)" ( (binary_expression "numpunct<wchar_t> *)operator_new(0xc)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "*)operator_new(0xc)" * (ERROR ")" )) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ))) ;) (expression_statement "*(undefined4 *)(this_01 + 4) = 0;" (assignment_expression "*(undefined4 *)(this_01 + 4) = 0" (pointer_expression "*(undefined4 *)(this_01 + 4)" * (cast_expression "(undefined4 *)(this_01 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 4)" ( (binary_expression "this_01 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this_01 + 8) = 0;" (assignment_expression "*(undefined4 *)(this_01 + 8) = 0" (pointer_expression "*(undefined4 *)(this_01 + 8)" * (cast_expression "(undefined4 *)(this_01 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 8)" ( (binary_expression "this_01 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this_01 = &PTR__numpunct_003a8ce0;" (assignment_expression "*(undefined ***)this_01 = &PTR__numpunct_003a8ce0" (pointer_expression "*(undefined ***)this_01" * (cast_expression "(undefined ***)this_01" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR__numpunct_003a8ce0" & identifier)) ;) comment comment (expression_statement "numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2);" (binary_expression "numpunct<wchar_t>::_M_initialize_numpunct(this_01,*param_2)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct(this_01,*param_2)" identifier (argument_list "(this_01,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) )))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n  }" { (expression_statement "*(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;" (assignment_expression "*(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1" (pointer_expression "*(int *)(this_01 + 4)" * (cast_expression "(int *)(this_01 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 4)" ( (binary_expression "this_01 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_01 + 4) + 1" (pointer_expression "*(int *)(this_01 + 4)" * (cast_expression "(int *)(this_01 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 4)" ( (binary_expression "this_01 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1;" (assignment_expression "*(int *)(this_01 + 4) = *(int *)(this_01 + 4) + 1" (pointer_expression "*(int *)(this_01 + 4)" * (cast_expression "(int *)(this_01 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 4)" ( (binary_expression "this_01 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_01 + 4) + 1" (pointer_expression "*(int *)(this_01 + 4)" * (cast_expression "(int *)(this_01 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 4)" ( (binary_expression "this_01 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9ee8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9ee8);" (call_expression "_M_id((id *)PTR_id_003a9ee8)" identifier (argument_list "((id *)PTR_id_003a9ee8)" ( (cast_expression "(id *)PTR_id_003a9ee8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01;" (assignment_expression "*(numpunct<wchar_t> **)(iVar1 + iVar3 * 4) = this_01" (pointer_expression "*(numpunct<wchar_t> **)(iVar1 + iVar3 * 4)" * (call_expression "(numpunct<wchar_t> **)(iVar1 + iVar3 * 4)" (parenthesized_expression "(numpunct<wchar_t> **)" ( (binary_expression "numpunct<wchar_t> **" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(0xc);" (assignment_expression "puVar4 = (undefined4 *)operator_new(0xc)" identifier = (cast_expression "(undefined4 *)operator_new(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar4 = &PTR__collate_003a8c68;" (assignment_expression "*puVar4 = &PTR__collate_003a8c68" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__collate_003a8c68" & identifier)) ;) (ERROR "uVar5 = facet::" (assignment_expression "uVar5 = facet" identifier = identifier) : :) (expression_statement "_S_clone_c_locale(local_20);" (call_expression "_S_clone_c_locale(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = puVar4[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = puVar4[1] + 1;\n  }" { (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9bd8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9bd8);" (call_expression "_M_id((id *)PTR_id_003a9bd8)" identifier (argument_list "((id *)PTR_id_003a9bd8)" ( (cast_expression "(id *)PTR_id_003a9bd8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var6 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var6 = (__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 "p_Var6->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__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_Var6->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[2]" (field_expression "p_Var6->__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_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8;" (assignment_expression "p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8de8" (subscript_expression "p_Var6->__locales[0]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003a8de8" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003a8de8" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);" (comma_expression "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var6,*(char **)param_3)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var6,*(char **)param_3)" identifier (argument_list "(p_Var6,*(char **)param_3)" ( identifier , (pointer_expression "*(char **)param_3" * (cast_expression "(char **)param_3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }" { (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9db0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9db0);" (call_expression "_M_id((id *)PTR_id_003a9db0)" identifier (argument_list "((id *)PTR_id_003a9db0)" ( (cast_expression "(id *)PTR_id_003a9db0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;" (assignment_expression "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6" (pointer_expression "*(__locale_struct **)(iVar1 + iVar3 * 4)" * (cast_expression "(__locale_struct **)(iVar1 + iVar3 * 4)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var6 = (__locale_struct *)operator_new(0xc);" (assignment_expression "p_Var6 = (__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 "p_Var6->__locales[1] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[1] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__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_Var6->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var6->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var6->__locales[2]" (field_expression "p_Var6->__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_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4;" (assignment_expression "p_Var6->__locales[0] = (__locale_data *)&PTR__moneypunct_003a8db4" (subscript_expression "p_Var6->__locales[0]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003a8db4" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003a8db4" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3);" (comma_expression "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var6,*(char **)param_3)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var6,*(char **)param_3)" identifier (argument_list "(p_Var6,*(char **)param_3)" ( identifier , (pointer_expression "*(char **)param_3" * (cast_expression "(char **)param_3" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }\n  else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n  }" { (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "p_Var6->__locales[1] = p_Var6->__locales[1] + 1;" (assignment_expression "p_Var6->__locales[1] = p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) = (binary_expression "p_Var6->__locales[1] + 1" (subscript_expression "p_Var6->__locales[1]" (field_expression "p_Var6->__locales" identifier -> field_identifier) [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9c5c);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9c5c);" (call_expression "_M_id((id *)PTR_id_003a9c5c)" identifier (argument_list "((id *)PTR_id_003a9c5c)" ( (cast_expression "(id *)PTR_id_003a9c5c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6;" (assignment_expression "*(__locale_struct **)(iVar1 + iVar3 * 4) = p_Var6" (pointer_expression "*(__locale_struct **)(iVar1 + iVar3 * 4)" * (cast_expression "(__locale_struct **)(iVar1 + iVar3 * 4)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__money_get_003a8ef8;" (assignment_expression "*puVar4 = &PTR__money_get_003a8ef8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__money_get_003a8ef8" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9f1c);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9f1c);" (call_expression "_M_id((id *)PTR_id_003a9f1c)" identifier (argument_list "((id *)PTR_id_003a9f1c)" ( (cast_expression "(id *)PTR_id_003a9f1c" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__money_put_003a8f10;" (assignment_expression "*puVar4 = &PTR__money_put_003a8f10" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__money_put_003a8f10" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9fc4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9fc4);" (call_expression "_M_id((id *)PTR_id_003a9fc4)" identifier (argument_list "((id *)PTR_id_003a9fc4)" ( (cast_expression "(id *)PTR_id_003a9fc4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)operator_new(8);" (assignment_expression "puVar4 = (undefined4 *)operator_new(8)" identifier = (cast_expression "(undefined4 *)operator_new(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR__time_get_003a8f50;" (assignment_expression "*puVar4 = &PTR__time_get_003a8f50" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__time_get_003a8f50" & identifier)) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    puVar4[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4[1] = 1;\n  }" { (expression_statement "puVar4[1] = 1;" (assignment_expression "puVar4[1] = 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar4[1] = puVar4[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4[1] = puVar4[1] + 1;" (assignment_expression "puVar4[1] = puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (binary_expression "puVar4[1] + 1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9fc8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9fc8);" (call_expression "_M_id((id *)PTR_id_003a9fc8)" identifier (argument_list "((id *)PTR_id_003a9fc8)" ( (cast_expression "(id *)PTR_id_003a9fc8" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4;" (assignment_expression "*(undefined4 **)(iVar1 + iVar3 * 4) = puVar4" (pointer_expression "*(undefined4 **)(iVar1 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar1 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_02 = (messages<wchar_t> *)operator_new(0x10);" (assignment_expression "this_02 = (messages<wchar_t> *)operator_new(0x10)" identifier = (parenthesized_expression "(messages<wchar_t> *)operator_new(0x10)" ( (binary_expression "messages<wchar_t> *)operator_new(0x10)" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "*)operator_new(0x10)" * (ERROR ")" )) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ))) ;) comment comment (expression_statement "messages<wchar_t>::messages(this_02,*param_2,param_4,0);" (binary_expression "messages<wchar_t>::messages(this_02,*param_2,param_4,0)" (binary_expression "messages<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "messages(this_02,*param_2,param_4,0)" identifier (argument_list "(this_02,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal )))) ;) (if_statement "if (puVar2 == (undefined *)0x0) {\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar2 == (undefined *)0x0)" ( (binary_expression "puVar2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n  }" { (expression_statement "*(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;" (assignment_expression "*(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1" (pointer_expression "*(int *)(this_02 + 4)" * (cast_expression "(int *)(this_02 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 4)" ( (binary_expression "this_02 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_02 + 4) + 1" (pointer_expression "*(int *)(this_02 + 4)" * (cast_expression "(int *)(this_02 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 4)" ( (binary_expression "this_02 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1;" (assignment_expression "*(int *)(this_02 + 4) = *(int *)(this_02 + 4) + 1" (pointer_expression "*(int *)(this_02 + 4)" * (cast_expression "(int *)(this_02 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 4)" ( (binary_expression "this_02 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(this_02 + 4) + 1" (pointer_expression "*(int *)(this_02 + 4)" * (cast_expression "(int *)(this_02 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 4)" ( (binary_expression "this_02 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar1 = *(int *)((int)param_1 + 4);" (assignment_expression "iVar1 = *(int *)((int)param_1 + 4)" identifier = (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (ERROR "iVar3 = locale::" (assignment_expression "iVar3 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_003a9bb0);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_003a9bb0);" (call_expression "_M_id((id *)PTR_id_003a9bb0)" identifier (argument_list "((id *)PTR_id_003a9bb0)" ( (cast_expression "(id *)PTR_id_003a9bb0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "*(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02;" (assignment_expression "*(messages<wchar_t> **)(iVar1 + iVar3 * 4) = this_02" (pointer_expression "*(messages<wchar_t> **)(iVar1 + iVar3 * 4)" * (call_expression "(messages<wchar_t> **)(iVar1 + iVar3 * 4)" (parenthesized_expression "(messages<wchar_t> **)" ( (binary_expression "messages<wchar_t> **" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(iVar1 + iVar3 * 4)" ( (binary_expression "iVar1 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    \n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    \n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    \n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    \n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    \n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    \n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}\n\n" (function_definition "void FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    \n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    \n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    \n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    \n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    \n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    \n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" primitive_type (function_declarator "FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    \n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    \n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    \n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    \n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    \n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    \n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 local_20 [4];" type_identifier (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a73cc;" (assignment_expression "*puVar2 = &PTR_FUN_003a73cc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a73cc" & identifier)) ;) (expression_statement "FUN_00248ea0(puVar2,*param_2);" (call_expression "FUN_00248ea0(puVar2,*param_2)" identifier (argument_list "(puVar2,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_003a9f3c;" (assignment_expression "puVar1 = PTR___pthread_key_create_003a9f3c" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(PTR___pthread_key_create_003a9f3c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003a9f3c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e20)" identifier (argument_list "(PTR_DAT_003a9e20)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar2 = &PTR_FUN_003a7394;" (assignment_expression "*puVar2 = &PTR_FUN_003a7394" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a7394" & identifier)) ;) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" identifier = (call_expression "FUN_00245520(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e7c)" identifier (argument_list "(PTR_DAT_003a9e7c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a74d4;" (assignment_expression "*puVar2 = &PTR_FUN_003a74d4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a74d4" & identifier)) ;) (expression_statement "FUN_00249d20(puVar2,*param_2,0);" (call_expression "FUN_00249d20(puVar2,*param_2,0)" identifier (argument_list "(puVar2,*param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bfc)" identifier (argument_list "(PTR_DAT_003a9bfc)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a74a0;" (assignment_expression "*puVar2 = &PTR_FUN_003a74a0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a74a0" & identifier)) ;) (expression_statement "FUN_002497e0(puVar2,*param_2,0);" (call_expression "FUN_002497e0(puVar2,*param_2,0)" identifier (argument_list "(puVar2,*param_2,0)" ( identifier , (pointer_expression "*param_2" * identifier) , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9ed4)" identifier (argument_list "(PTR_DAT_003a9ed4)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a75e4;" (assignment_expression "*puVar2 = &PTR_FUN_003a75e4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a75e4" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fbc)" identifier (argument_list "(PTR_DAT_003a9fbc)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a75fc;" (assignment_expression "*puVar2 = &PTR_FUN_003a75fc" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a75fc" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9d08)" identifier (argument_list "(PTR_DAT_003a9d08)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a763c;" (assignment_expression "*puVar2 = &PTR_FUN_003a763c" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a763c" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e1c)" identifier (argument_list "(PTR_DAT_003a9e1c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" identifier = (call_expression "FUN_001fb470(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "FUN_00211870(iVar5,*param_2,param_4,0);" (call_expression "FUN_00211870(iVar5,*param_2,param_4,0)" identifier (argument_list "(iVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" { (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9e00)" identifier (argument_list "(PTR_DAT_003a9e00)" ( identifier )))) ;) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" * (cast_expression "(int *)(iVar3 + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar6 * 4)" ( (binary_expression "iVar3 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8ce0;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ce0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8ce0" & identifier)) ;) (expression_statement "FUN_002491b0(puVar2,*param_2);" (call_expression "FUN_002491b0(puVar2,*param_2)" identifier (argument_list "(puVar2,*param_2)" ( identifier , (pointer_expression "*param_2" * identifier) ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9ee8)" identifier (argument_list "(PTR_DAT_003a9ee8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*puVar2 = &PTR_FUN_003a8c68;" (assignment_expression "*puVar2 = &PTR_FUN_003a8c68" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8c68" & identifier)) ;) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" identifier = (call_expression "FUN_00245520(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bd8)" identifier (argument_list "(PTR_DAT_003a9bd8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8de8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8de8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8de8" & identifier)) ;) (expression_statement "FUN_0024aad0(puVar2,*param_3,param_5);" (call_expression "FUN_0024aad0(puVar2,*param_3,param_5)" identifier (argument_list "(puVar2,*param_3,param_5)" ( identifier , (pointer_expression "*param_3" * identifier) , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9db0)" identifier (argument_list "(PTR_DAT_003a9db0)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(0xc)" identifier (argument_list "(0xc)" ( 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_003a8db4;" (assignment_expression "*puVar2 = &PTR_FUN_003a8db4" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8db4" & identifier)) ;) (expression_statement "FUN_0024a500(puVar2,*param_3,param_5);" (call_expression "FUN_0024a500(puVar2,*param_3,param_5)" identifier (argument_list "(puVar2,*param_3,param_5)" ( identifier , (pointer_expression "*param_3" * identifier) , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" { (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9c5c)" identifier (argument_list "(PTR_DAT_003a9c5c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8ef8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ef8" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8ef8" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9f1c)" identifier (argument_list "(PTR_DAT_003a9f1c)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8f10;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f10" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8f10" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc4)" identifier (argument_list "(PTR_DAT_003a9fc4)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" identifier = (cast_expression "(undefined4 *)FUN_001fb470(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fb470(8)" identifier (argument_list "(8)" ( 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_003a8f50;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f50" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003a8f50" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" { (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc8)" identifier (argument_list "(PTR_DAT_003a9fc8)" ( identifier )))) ;) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" * (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + iVar3 * 4)" ( (binary_expression "iVar5 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" identifier = (call_expression "FUN_001fb470(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "FUN_00251c60(iVar5,*param_2,param_4,0);" (call_expression "FUN_00251c60(iVar5,*param_2,param_4,0)" identifier (argument_list "(iVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" { (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (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) ))))) ;) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0)" identifier = (call_expression "FUN_001ff9b0(PTR_DAT_003a9bb0)" identifier (argument_list "(PTR_DAT_003a9bb0)" ( identifier )))) ;) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" * (cast_expression "(int *)(iVar3 + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + iVar6 * 4)" ( (binary_expression "iVar3 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ 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 ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , LIT ))) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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 (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , LIT ))) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    \n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    \n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    \n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    \n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    \n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    \n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00282e80(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" (identifier "FUN_00282e80") (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,\n                 undefined4 param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 local_20 [4];\n  \n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a73cc;\n                    \n  FUN_00248ea0(puVar2,*param_2);\n  puVar1 = PTR___pthread_key_create_003a9f3c;\n  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a7394;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74d4;\n                    \n  FUN_00249d20(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a74a0;\n                    \n  FUN_002497e0(puVar2,*param_2,0);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75e4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a75fc;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a763c;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00211870(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8ce0;\n                    \n  FUN_002491b0(puVar2,*param_2);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  local_20[0] = *param_2;\n  *puVar2 = &PTR_FUN_003a8c68;\n  uVar4 = FUN_00245520(local_20);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8de8;\n                    \n  FUN_0024aad0(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(0xc);\n  puVar2[1] = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003a8db4;\n                    \n  FUN_0024a500(puVar2,*param_3,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8ef8;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f10;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  puVar2 = (undefined4 *)FUN_001fb470(8);\n  puVar2[1] = 0;\n  *puVar2 = &PTR_FUN_003a8f50;\n  if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }\n  iVar5 = *(int *)(param_1 + 4);\n  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);\n  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;\n  iVar5 = FUN_001fb470(0x10);\n                    \n  FUN_00251c60(iVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }\n  iVar3 = *(int *)(param_1 + 4);\n  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);\n  *(int *)(iVar3 + iVar6 * 4) = iVar5;\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 local_20 [4];" (type_identifier "undefined4") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a73cc;" (assignment_expression "*puVar2 = &PTR_FUN_003a73cc" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a73cc" (& "&") (identifier "PTR_FUN_003a73cc"))) (; ";")) (expression_statement "FUN_00248ea0(puVar2,*param_2);" (call_expression "FUN_00248ea0(puVar2,*param_2)" (identifier "FUN_00248ea0") (argument_list "(puVar2,*param_2)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_003a9f3c;" (assignment_expression "puVar1 = PTR___pthread_key_create_003a9f3c" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_003a9f3c")) (; ";")) (if_statement "if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_003a9f3c == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_003a9f3c == (undefined *)0x0" (identifier "PTR___pthread_key_create_003a9f3c") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9e20)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9e20)" (( "(") (identifier "PTR_DAT_003a9e20") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003a7394;" (assignment_expression "*puVar2 = &PTR_FUN_003a7394" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a7394" (& "&") (identifier "PTR_FUN_003a7394"))) (; ";")) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" (identifier "uVar4") (= "=") (call_expression "FUN_00245520(local_20)" (identifier "FUN_00245520") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")")))) (; ";")) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9e7c)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9e7c)" (( "(") (identifier "PTR_DAT_003a9e7c") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a74d4;" (assignment_expression "*puVar2 = &PTR_FUN_003a74d4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a74d4" (& "&") (identifier "PTR_FUN_003a74d4"))) (; ";")) (expression_statement "FUN_00249d20(puVar2,*param_2,0);" (call_expression "FUN_00249d20(puVar2,*param_2,0)" (identifier "FUN_00249d20") (argument_list "(puVar2,*param_2,0)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9bfc)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9bfc)" (( "(") (identifier "PTR_DAT_003a9bfc") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a74a0;" (assignment_expression "*puVar2 = &PTR_FUN_003a74a0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a74a0" (& "&") (identifier "PTR_FUN_003a74a0"))) (; ";")) (expression_statement "FUN_002497e0(puVar2,*param_2,0);" (call_expression "FUN_002497e0(puVar2,*param_2,0)" (identifier "FUN_002497e0") (argument_list "(puVar2,*param_2,0)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9ed4)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9ed4)" (( "(") (identifier "PTR_DAT_003a9ed4") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a75e4;" (assignment_expression "*puVar2 = &PTR_FUN_003a75e4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a75e4" (& "&") (identifier "PTR_FUN_003a75e4"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9fbc)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9fbc)" (( "(") (identifier "PTR_DAT_003a9fbc") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a75fc;" (assignment_expression "*puVar2 = &PTR_FUN_003a75fc" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a75fc" (& "&") (identifier "PTR_FUN_003a75fc"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9d08)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9d08)" (( "(") (identifier "PTR_DAT_003a9d08") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a763c;" (assignment_expression "*puVar2 = &PTR_FUN_003a763c" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a763c" (& "&") (identifier "PTR_FUN_003a763c"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9e1c)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9e1c)" (( "(") (identifier "PTR_DAT_003a9e1c") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" (identifier "iVar5") (= "=") (call_expression "FUN_001fb470(0x10)" (identifier "FUN_001fb470") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "FUN_00211870(iVar5,*param_2,param_4,0);" (call_expression "FUN_00211870(iVar5,*param_2,param_4,0)" (identifier "FUN_00211870") (argument_list "(iVar5,*param_2,param_4,0)" (( "(") (identifier "iVar5") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" ({ "{") (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" (identifier "iVar3") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00)" (identifier "iVar6") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9e00)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9e00)" (( "(") (identifier "PTR_DAT_003a9e00") () ")")))) (; ";")) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" (* "*") (cast_expression "(int *)(iVar3 + iVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar6 * 4)" (( "(") (binary_expression "iVar3 + iVar6 * 4" (identifier "iVar3") (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a8ce0;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ce0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8ce0" (& "&") (identifier "PTR_FUN_003a8ce0"))) (; ";")) (expression_statement "FUN_002491b0(puVar2,*param_2);" (call_expression "FUN_002491b0(puVar2,*param_2)" (identifier "FUN_002491b0") (argument_list "(puVar2,*param_2)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9ee8)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9ee8)" (( "(") (identifier "PTR_DAT_003a9ee8") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0] = *param_2;" (assignment_expression "local_20[0] = *param_2" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003a8c68;" (assignment_expression "*puVar2 = &PTR_FUN_003a8c68" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8c68" (& "&") (identifier "PTR_FUN_003a8c68"))) (; ";")) (expression_statement "uVar4 = FUN_00245520(local_20);" (assignment_expression "uVar4 = FUN_00245520(local_20)" (identifier "uVar4") (= "=") (call_expression "FUN_00245520(local_20)" (identifier "FUN_00245520") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")")))) (; ";")) (expression_statement "puVar2[2] = uVar4;" (assignment_expression "puVar2[2] = uVar4" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9bd8)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9bd8)" (( "(") (identifier "PTR_DAT_003a9bd8") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a8de8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8de8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8de8" (& "&") (identifier "PTR_FUN_003a8de8"))) (; ";")) (expression_statement "FUN_0024aad0(puVar2,*param_3,param_5);" (call_expression "FUN_0024aad0(puVar2,*param_3,param_5)" (identifier "FUN_0024aad0") (argument_list "(puVar2,*param_3,param_5)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (identifier "param_5") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9db0)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9db0)" (( "(") (identifier "PTR_DAT_003a9db0") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(0xc);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(0xc)" (identifier "FUN_001fb470") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (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_003a8db4;" (assignment_expression "*puVar2 = &PTR_FUN_003a8db4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8db4" (& "&") (identifier "PTR_FUN_003a8db4"))) (; ";")) (expression_statement "FUN_0024a500(puVar2,*param_3,param_5);" (call_expression "FUN_0024a500(puVar2,*param_3,param_5)" (identifier "FUN_0024a500") (argument_list "(puVar2,*param_3,param_5)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (identifier "param_5") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = puVar2[1] + 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = puVar2[1] + 1;\n  }" ({ "{") (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9c5c)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9c5c)" (( "(") (identifier "PTR_DAT_003a9c5c") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a8ef8;" (assignment_expression "*puVar2 = &PTR_FUN_003a8ef8" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8ef8" (& "&") (identifier "PTR_FUN_003a8ef8"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9f1c)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9f1c)" (( "(") (identifier "PTR_DAT_003a9f1c") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a8f10;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f10" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8f10" (& "&") (identifier "PTR_FUN_003a8f10"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc4)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9fc4)" (( "(") (identifier "PTR_DAT_003a9fc4") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_001fb470(8);" (assignment_expression "puVar2 = (undefined4 *)FUN_001fb470(8)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_001fb470(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fb470(8)" (identifier "FUN_001fb470") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (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_003a8f50;" (assignment_expression "*puVar2 = &PTR_FUN_003a8f50" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003a8f50" (& "&") (identifier "PTR_FUN_003a8f50"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    puVar2[1] = 1;\n  }\n  else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 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    puVar2[1] = 1;\n  }" ({ "{") (expression_statement "puVar2[1] = 1;" (assignment_expression "puVar2[1] = 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    puVar2[1] = puVar2[1] + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar2[1] = puVar2[1] + 1;" (assignment_expression "puVar2[1] = puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar2[1] + 1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(param_1 + 4);" (assignment_expression "iVar5 = *(int *)(param_1 + 4)" (identifier "iVar5") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);" (assignment_expression "iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8)" (identifier "iVar3") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9fc8)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9fc8)" (( "(") (identifier "PTR_DAT_003a9fc8") () ")")))) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;" (assignment_expression "*(undefined4 **)(iVar5 + iVar3 * 4) = puVar2" (pointer_expression "*(undefined4 **)(iVar5 + iVar3 * 4)" (* "*") (cast_expression "(undefined4 **)(iVar5 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + iVar3 * 4)" (( "(") (binary_expression "iVar5 + iVar3 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "iVar5 = FUN_001fb470(0x10);" (assignment_expression "iVar5 = FUN_001fb470(0x10)" (identifier "iVar5") (= "=") (call_expression "FUN_001fb470(0x10)" (identifier "FUN_001fb470") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "FUN_00251c60(iVar5,*param_2,param_4,0);" (call_expression "FUN_00251c60(iVar5,*param_2,param_4,0)" (identifier "FUN_00251c60") (argument_list "(iVar5,*param_2,param_4,0)" (( "(") (identifier "iVar5") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 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 *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n  }" ({ "{") (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;" (assignment_expression "*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 4) + 1" (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" (identifier "iVar3") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);" (assignment_expression "iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0)" (identifier "iVar6") (= "=") (call_expression "FUN_001ff9b0(PTR_DAT_003a9bb0)" (identifier "FUN_001ff9b0") (argument_list "(PTR_DAT_003a9bb0)" (( "(") (identifier "PTR_DAT_003a9bb0") () ")")))) (; ";")) (expression_statement "*(int *)(iVar3 + iVar6 * 4) = iVar5;" (assignment_expression "*(int *)(iVar3 + iVar6 * 4) = iVar5" (pointer_expression "*(int *)(iVar3 + iVar6 * 4)" (* "*") (cast_expression "(int *)(iVar3 + iVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + iVar6 * 4)" (( "(") (binary_expression "iVar3 + iVar6 * 4" (identifier "iVar3") (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::locale::_Impl::_M_init_extra(void*, void*, char const*, char const*) */

void std::locale::_Impl::function_1(void *param_1,void *param_2,char *param_3,char *param_4)

{
  int var_12;
  type_1 *var_15;
  var_1<var_2> *var_6;
  int var_13;
  type_2 *puVar4;
  type_2 uVar5;
  type_3 *p_Var6;
  var_3<var_2> *var_18;
  var_1<var_4> *var_19;
  var_3<var_4> *var_20;
  type_3 *local_20 [4];
  
  var_6 = (var_1<var_2> *)var_5(0xc);
  *(type_2 *)(var_6 + 4) = 0;
  *(type_2 *)(var_6 + 8) = 0;
  *(type_1 ***)var_6 = &PTR__numpunct_003a73cc;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */
  var_1<var_2>::var_7(var_6,*param_2);
  var_15 = var_8;
  if (var_8 == (type_1 *)0x0) {
    *(int *)(var_6 + 4) = *(int *)(var_6 + 4) + 1;
  }
  else {
    var_9();
    *(int *)(var_6 + 4) = *(int *)(var_6 + 4) + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9e20);
  *(var_1<var_2> **)(var_12 + var_13 * 4) = var_6;
  puVar4 = (type_2 *)var_5(0xc);
  puVar4[1] = 0;
                    /* WARNING: Load size is inaccurate */
  local_20[0] = *param_2;
  *puVar4 = &PTR__collate_003a7394;
  uVar5 = facet::var_14(local_20);
  puVar4[2] = uVar5;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = puVar4[1] + 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9e7c);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  p_Var6 = (type_3 *)var_5(0xc);
  p_Var6->__locales[1] = (type_5 *)0x0;
  p_Var6->__locales[2] = (type_5 *)0x0;
  p_Var6->__locales[0] = (type_5 *)&PTR__moneypunct_003a74d4;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */
  var_16<var_2,false>::var_17(p_Var6,*param_2);
  if (var_15 == (type_1 *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    var_9();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9bfc);
  *(type_3 **)(var_12 + var_13 * 4) = p_Var6;
  p_Var6 = (type_3 *)var_5(0xc);
  p_Var6->__locales[1] = (type_5 *)0x0;
  p_Var6->__locales[2] = (type_5 *)0x0;
  p_Var6->__locales[0] = (type_5 *)&PTR__moneypunct_003a74a0;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */
  var_16<var_2,true>::var_17(p_Var6,*param_2);
  if (var_15 == (type_1 *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    var_9();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9ed4);
  *(type_3 **)(var_12 + var_13 * 4) = p_Var6;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_get_003a75e4;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9fbc);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_put_003a75fc;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9d08);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__time_get_003a763c;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9e1c);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  var_18 = (var_3<var_2> *)var_5(0x10);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */
  var_3<var_2>::var_3(var_18,*param_2,param_4,0);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_18 + 4) = *(int *)(var_18 + 4) + 1;
  }
  else {
    var_9();
    *(int *)(var_18 + 4) = *(int *)(var_18 + 4) + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9e00);
  *(var_3<var_2> **)(var_12 + var_13 * 4) = var_18;
  var_19 = (var_1<var_4> *)var_5(0xc);
  *(type_2 *)(var_19 + 4) = 0;
  *(type_2 *)(var_19 + 8) = 0;
  *(type_1 ***)var_19 = &PTR__numpunct_003a8ce0;
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */
  var_1<var_4>::var_7(var_19,*param_2);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_19 + 4) = *(int *)(var_19 + 4) + 1;
  }
  else {
    var_9();
    *(int *)(var_19 + 4) = *(int *)(var_19 + 4) + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9ee8);
  *(var_1<var_4> **)(var_12 + var_13 * 4) = var_19;
  puVar4 = (type_2 *)var_5(0xc);
  puVar4[1] = 0;
                    /* WARNING: Load size is inaccurate */
  local_20[0] = *param_2;
  *puVar4 = &PTR__collate_003a8c68;
  uVar5 = facet::var_14(local_20);
  puVar4[2] = uVar5;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = puVar4[1] + 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9bd8);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  p_Var6 = (type_3 *)var_5(0xc);
  p_Var6->__locales[1] = (type_5 *)0x0;
  p_Var6->__locales[2] = (type_5 *)0x0;
  p_Var6->__locales[0] = (type_5 *)&PTR__moneypunct_003a8de8;
                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */
  var_16<var_4,false>::var_17(p_Var6,*(char **)param_3);
  if (var_15 == (type_1 *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    var_9();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9db0);
  *(type_3 **)(var_12 + var_13 * 4) = p_Var6;
  p_Var6 = (type_3 *)var_5(0xc);
  p_Var6->__locales[1] = (type_5 *)0x0;
  p_Var6->__locales[2] = (type_5 *)0x0;
  p_Var6->__locales[0] = (type_5 *)&PTR__moneypunct_003a8db4;
                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */
  var_16<var_4,true>::var_17(p_Var6,*(char **)param_3);
  if (var_15 == (type_1 *)0x0) {
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
  }
  else {
    var_9();
    p_Var6->__locales[1] = p_Var6->__locales[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9c5c);
  *(type_3 **)(var_12 + var_13 * 4) = p_Var6;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_get_003a8ef8;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9f1c);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__money_put_003a8f10;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9fc4);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  puVar4 = (type_2 *)var_5(8);
  puVar4[1] = 0;
  *puVar4 = &PTR__time_get_003a8f50;
  if (var_15 == (type_1 *)0x0) {
    puVar4[1] = 1;
  }
  else {
    var_9();
    puVar4[1] = puVar4[1] + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9fc8);
  *(type_2 **)(var_12 + var_13 * 4) = puVar4;
  var_20 = (var_3<var_4> *)var_5(0x10);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */
  var_3<var_4>::var_3(var_20,*param_2,param_4,0);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_20 + 4) = *(int *)(var_20 + 4) + 1;
  }
  else {
    var_9();
    *(int *)(var_20 + 4) = *(int *)(var_20 + 4) + 1;
    var_10();
  }
  var_12 = *(int *)((int)param_1 + 4);
  var_13 = locale::id::var_11((type_4 *)PTR_id_003a9bb0);
  *(var_3<var_4> **)(var_12 + var_13 * 4) = var_20;
  return;
}


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

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

void MASKED(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 local_20 [4];
  
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a73cc;
                    /* try { // try from 00282ec3 to 00282ec7 has its CatchHandler @ 002835f6 */
  FUN_00248ea0(puVar2,*param_2);
  puVar1 = PTR___pthread_key_create_003a9f3c;
  if (PTR___pthread_key_create_003a9f3c == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e20);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  local_20[0] = *param_2;
  *puVar2 = &PTR_FUN_003a7394;
  uVar4 = FUN_00245520(local_20);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e7c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a74d4;
                    /* try { // try from 00282fad to 00282fb1 has its CatchHandler @ 002835d3 */
  FUN_00249d20(puVar2,*param_2,0);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bfc);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a74a0;
                    /* try { // try from 0028301c to 00283020 has its CatchHandler @ 002835cc */
  FUN_002497e0(puVar2,*param_2,0);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ed4);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a75e4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fbc);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a75fc;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9d08);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a763c;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9e1c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  iVar5 = FUN_001fb470(0x10);
                    /* try { // try from 00283176 to 0028317a has its CatchHandler @ 002835e1 */
  FUN_00211870(iVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
    UNLOCK();
  }
  iVar3 = *(int *)(param_1 + 4);
  iVar6 = FUN_001ff9b0(PTR_DAT_003a9e00);
  *(int *)(iVar3 + iVar6 * 4) = iVar5;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8ce0;
                    /* try { // try from 002831e6 to 002831ea has its CatchHandler @ 002835da */
  FUN_002491b0(puVar2,*param_2);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9ee8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  local_20[0] = *param_2;
  *puVar2 = &PTR_FUN_003a8c68;
  uVar4 = FUN_00245520(local_20);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9bd8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8de8;
                    /* try { // try from 002832c4 to 002832c8 has its CatchHandler @ 002835ef */
  FUN_0024aad0(puVar2,*param_3,param_5);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9db0);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(0xc);
  puVar2[1] = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003a8db4;
                    /* try { // try from 00283336 to 0028333a has its CatchHandler @ 002835e8 */
  FUN_0024a500(puVar2,*param_3,param_5);
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = puVar2[1] + 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9c5c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8ef8;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9f1c);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8f10;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc4);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  puVar2 = (undefined4 *)FUN_001fb470(8);
  puVar2[1] = 0;
  *puVar2 = &PTR_FUN_003a8f50;
  if (puVar1 == (undefined *)0x0) {
    puVar2[1] = 1;
  }
  else {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  iVar5 = *(int *)(param_1 + 4);
  iVar3 = FUN_001ff9b0(PTR_DAT_003a9fc8);
  *(undefined4 **)(iVar5 + iVar3 * 4) = puVar2;
  iVar5 = FUN_001fb470(0x10);
                    /* try { // try from 00283490 to 00283494 has its CatchHandler @ 002835fd */
  FUN_00251c60(iVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  else {
    LOCK();
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
    UNLOCK();
  }
  iVar3 = *(int *)(param_1 + 4);
  iVar6 = FUN_001ff9b0(PTR_DAT_003a9bb0);
  *(int *)(iVar3 + iVar6 * 4) = iVar5;
  return;
}

