
/* 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)

{
  long lVar1;
  char *pcVar2;
  undefined *puVar3;
  numpunct<char> *this;
  long lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  __locale_struct *p_Var7;
  messages<char> *this_00;
  numpunct<wchar_t> *this_01;
  messages<wchar_t> *this_02;
  __locale_struct *local_40 [2];
  
  this = (numpunct<char> *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  p_Var7 = *param_2;
  *(undefined4 *)(this + 8) = 0;
  *(undefined8 *)(this + 0x10) = 0;
  *(undefined ***)this = &PTR__numpunct_003b8c90;
                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */
  numpunct<char>::_M_initialize_numpunct(this,p_Var7);
  puVar3 = PTR___pthread_key_create_003bdee8;
  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {
    *(int *)(this + 8) = *(int *)(this + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(this + 8) = *(int *)(this + 8) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&numpunct<char>::id);
  *(numpunct<char> **)(lVar1 + lVar4 * 8) = this;
  puVar5 = (undefined8 *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  local_40[0] = *param_2;
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__collate_003b8c20;
  uVar6 = facet::_S_clone_c_locale(local_40);
  puVar5[2] = uVar6;
  if (puVar3 == (undefined *)0x0) {
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&collate<char>::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  p_Var7 = (__locale_struct *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  pcVar2 = *param_2;
  *(undefined4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (__locale_data *)0x0;
  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0;
                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */
  moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);
  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;
  p_Var7 = (__locale_struct *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  pcVar2 = *param_2;
  *(undefined4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (__locale_data *)0x0;
  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38;
                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */
  moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&moneypunct<char,true>::id);
  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__money_get_003b90c0;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__money_put_003b90f0;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__time_get_003b9170;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  this_00 = (messages<char> *)operator_new(0x20);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */
  messages<char>::messages(this_00,*param_2,param_4,0);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&messages<char>::id);
  *(messages<char> **)(lVar1 + lVar4 * 8) = this_00;
  this_01 = (numpunct<wchar_t> *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  p_Var7 = *param_2;
  *(undefined4 *)(this_01 + 8) = 0;
  *(undefined8 *)(this_01 + 0x10) = 0;
  *(undefined ***)this_01 = &PTR__numpunct_003bbd80;
                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */
  numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&numpunct<wchar_t>::id);
  *(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01;
  puVar5 = (undefined8 *)operator_new(0x18);
                    /* WARNING: Load size is inaccurate */
  local_40[0] = *param_2;
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__collate_003bbc90;
  uVar6 = facet::_S_clone_c_locale(local_40);
  puVar5[2] = uVar6;
  if (puVar3 == (undefined *)0x0) {
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&collate<wchar_t>::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  p_Var7 = (__locale_struct *)operator_new(0x18);
  pcVar2 = *(char **)param_3;
  *(undefined4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (__locale_data *)0x0;
  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90;
                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */
  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,false>::id);
  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;
  p_Var7 = (__locale_struct *)operator_new(0x18);
  pcVar2 = *(char **)param_3;
  *(undefined4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (__locale_data *)0x0;
  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28;
                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */
  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);
  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__money_get_003bc1b0;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__money_put_003bc1e0;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  puVar5 = (undefined8 *)operator_new(0x10);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = &PTR__time_get_003bc260;
  if (puVar3 == (undefined *)0x0) {
    *(undefined4 *)(puVar5 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>
                                   ::id);
  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;
  this_02 = (messages<wchar_t> *)operator_new(0x20);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */
  messages<wchar_t>::messages(this_02,*param_2,param_4,0);
  if (puVar3 == (undefined *)0x0) {
    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;
    UNLOCK();
  }
  lVar1 = *(long *)((long)param_1 + 8);
  lVar4 = locale::id::_M_id((id *)&messages<wchar_t>::id);
  *(messages<wchar_t> **)(lVar1 + lVar4 * 8) = this_02;
  return;
}



void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,
                 undefined8 param_5)

{
  undefined *puVar1;
  undefined8 *puVar2;
  long lVar3;
  undefined8 uVar4;
  long lVar5;
  long lVar6;
  undefined8 local_40 [2];
  
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8c90;
                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */
  FUN_002bb4f0(puVar2,uVar4);
  puVar1 = PTR___pthread_key_create_003bdee8;
  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca510);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  local_40[0] = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b8c20;
  uVar4 = FUN_002b7c50(local_40);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca4d8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8ea0;
                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */
  FUN_002bc230(puVar2,uVar4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca530);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8e38;
                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */
  FUN_002bbd10(puVar2,uVar4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca528);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b90c0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca520);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b90f0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca518);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b9170;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca4e8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  lVar5 = FUN_00275550(0x20);
                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */
  FUN_00288110(lVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
    UNLOCK();
  }
  lVar3 = *(long *)(param_1 + 8);
  lVar6 = FUN_00279460(&DAT_003ca4e0);
  *(long *)(lVar3 + lVar6 * 8) = lVar5;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbd80;
                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */
  FUN_002bb7c0(puVar2,uVar4);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc90);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  local_40[0] = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bbc90;
  uVar4 = FUN_002b7c50(local_40);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc58);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_3;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbf90;
                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */
  FUN_002bcf00(puVar2,uVar4,param_5);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbcb0);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_3;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbf28;
                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */
  FUN_002bc950(puVar2,uVar4,param_5);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbca8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc1b0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbca0);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc1e0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc98);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc260;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc68);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  lVar5 = FUN_00275550(0x20);
                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */
  FUN_002c30d0(lVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
    UNLOCK();
  }
  lVar3 = *(long *)(param_1 + 8);
  lVar6 = FUN_00279460(&DAT_003cbc60);
  *(long *)(lVar3 + lVar6 * 8) = lVar5;
  return;
}


PUSH R15
MOV R15,RDX
PUSH R14
MOV R14,R8
PUSH R13
PUSH R12
MOV R12,RSI
PUSH RBP
PUSH RBX
MOV RBX,RDI
MOV EDI,0x18
SUB RSP,0x38
MOV qword ptr [RSP + 0x8],RCX
CALL 0x00275550
MOV RSI,qword ptr [R12]
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b8c80]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bb4f0
MOV RBP,qword ptr [0x003bdee8]
TEST RBP,RBP
JZ 0x002f4938
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca510]
MOV qword ptr [RSP + 0x10],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x10]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV RAX,qword ptr [R12]
MOV dword ptr [R13 + 0x8],0x0
MOV qword ptr [RSP + 0x28],RAX
LEA RAX,[0x3b8c10]
ADD RAX,0x10
MOV qword ptr [R13],RAX
LEA RAX,[RSP + 0x28]
MOV RDI,RAX
MOV qword ptr [RSP + 0x10],RAX
CALL 0x002b7c50
MOV qword ptr [R13 + 0x10],RAX
TEST RBP,RBP
JZ 0x002f4a20
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca4d8]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RSI,qword ptr [R12]
XOR EDX,EDX
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b8e90]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bc230
TEST RBP,RBP
JZ 0x002f4a10
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca530]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RSI,qword ptr [R12]
XOR EDX,EDX
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b8e28]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bbd10
TEST RBP,RBP
JZ 0x002f4a00
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca528]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x10
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b90b0]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f49f0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca520]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x10
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b90e0]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f49e0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca518]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x10
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3b9160]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f49d0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca4e8]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x20
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,qword ptr [R12]
XOR ECX,ECX
MOV RDI,RAX
MOV R13,RAX
CALL 0x00288110
TEST RBP,RBP
JZ 0x002f49c0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3ca4e0]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RSI,qword ptr [R12]
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bbd70]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bb7c0
TEST RBP,RBP
JZ 0x002f49b0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3cbc90]
MOV qword ptr [RSP + 0x18],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x18]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RDI,qword ptr [RSP + 0x10]
MOV R13,RAX
MOV RAX,qword ptr [R12]
MOV dword ptr [R13 + 0x8],0x0
MOV qword ptr [RSP + 0x28],RAX
LEA RAX,[0x3bbc80]
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002b7c50
MOV qword ptr [R13 + 0x10],RAX
TEST RBP,RBP
JZ 0x002f49a0
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3cbc58]
MOV qword ptr [RSP + 0x10],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x10]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RSI,qword ptr [R15]
MOV RDX,R14
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bbf80]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bcf00
TEST RBP,RBP
JZ 0x002f4990
ADD.LOCK dword ptr [R13 + 0x8],0x1
MOV RDX,qword ptr [RBX + 0x8]
LEA RDI,[0x3cbcb0]
MOV qword ptr [RSP + 0x10],RDX
CALL 0x00279460
MOV RDX,qword ptr [RSP + 0x10]
MOV EDI,0x18
MOV qword ptr [RDX + RAX*0x8],R13
CALL 0x00275550
MOV RSI,qword ptr [R15]
MOV RDX,R14
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bbf18]
MOV qword ptr [R13 + 0x10],0x0
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13],RAX
CALL 0x002bc950
TEST RBP,RBP
JZ 0x002f4980
ADD.LOCK dword ptr [R13 + 0x8],0x1
LEA RDI,[0x3cbca8]
MOV R14,qword ptr [RBX + 0x8]
CALL 0x00279460
MOV EDI,0x10
MOV qword ptr [R14 + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bc1a0]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f4970
ADD.LOCK dword ptr [R13 + 0x8],0x1
LEA RDI,[0x3cbca0]
MOV R14,qword ptr [RBX + 0x8]
CALL 0x00279460
MOV EDI,0x10
MOV qword ptr [R14 + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bc1d0]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f4960
ADD.LOCK dword ptr [R13 + 0x8],0x1
LEA RDI,[0x3cbc98]
MOV R14,qword ptr [RBX + 0x8]
CALL 0x00279460
MOV EDI,0x10
MOV qword ptr [R14 + RAX*0x8],R13
CALL 0x00275550
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x3bc250]
ADD RAX,0x10
MOV qword ptr [R13],RAX
TEST RBP,RBP
JZ 0x002f4950
ADD.LOCK dword ptr [R13 + 0x8],0x1
LEA RDI,[0x3cbc68]
MOV R14,qword ptr [RBX + 0x8]
CALL 0x00279460
MOV EDI,0x20
MOV qword ptr [R14 + RAX*0x8],R13
CALL 0x00275550
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,qword ptr [R12]
XOR ECX,ECX
MOV RDI,RAX
MOV R13,RAX
CALL 0x002c30d0
TEST RBP,RBP
JZ 0x002f4948
ADD.LOCK dword ptr [R13 + 0x8],0x1
LEA RDI,[0x3cbc60]
MOV RBX,qword ptr [RBX + 0x8]
CALL 0x00279460
MOV qword ptr [RBX + RAX*0x8],R13
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f43ec
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f490e
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f48cf
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f4889
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f4843
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f47fd
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f4797
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f4731
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f46c9
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f4665
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f4618
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f45c8
MOV dword ptr [R13 + 0x8],0x1
JMP 0x002f4578
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f4528
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f44c2
ADD dword ptr [R13 + 0x8],0x1
JMP 0x002f445c
(translation_unit "void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}\n\n" (function_definition "void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" primitive_type (function_declarator "FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8c90;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8c90" & identifier)) ;) comment (expression_statement "FUN_002bb4f0(puVar2,uVar4);" (call_expression "FUN_002bb4f0(puVar2,uVar4)" identifier (argument_list "(puVar2,uVar4)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_003bdee8;" (assignment_expression "puVar1 = PTR___pthread_key_create_003bdee8" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(PTR___pthread_key_create_003bdee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003bdee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca510);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca510)" identifier = (call_expression "FUN_00279460(&DAT_003ca510)" identifier (argument_list "(&DAT_003ca510)" ( (pointer_expression "&DAT_003ca510" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b8c20;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8c20" & identifier)) ;) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" identifier = (call_expression "FUN_002b7c50(local_40)" identifier (argument_list "(local_40)" ( 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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4d8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4d8)" identifier = (call_expression "FUN_00279460(&DAT_003ca4d8)" identifier (argument_list "(&DAT_003ca4d8)" ( (pointer_expression "&DAT_003ca4d8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8ea0;" (assignment_expression "*puVar2 = &PTR_FUN_003b8ea0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8ea0" & identifier)) ;) comment (expression_statement "FUN_002bc230(puVar2,uVar4,0);" (call_expression "FUN_002bc230(puVar2,uVar4,0)" identifier (argument_list "(puVar2,uVar4,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca530);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca530)" identifier = (call_expression "FUN_00279460(&DAT_003ca530)" identifier (argument_list "(&DAT_003ca530)" ( (pointer_expression "&DAT_003ca530" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8e38;" (assignment_expression "*puVar2 = &PTR_FUN_003b8e38" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8e38" & identifier)) ;) comment (expression_statement "FUN_002bbd10(puVar2,uVar4,0);" (call_expression "FUN_002bbd10(puVar2,uVar4,0)" identifier (argument_list "(puVar2,uVar4,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca528);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca528)" identifier = (call_expression "FUN_00279460(&DAT_003ca528)" identifier (argument_list "(&DAT_003ca528)" ( (pointer_expression "&DAT_003ca528" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b90c0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90c0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b90c0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca520);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca520)" identifier = (call_expression "FUN_00279460(&DAT_003ca520)" identifier (argument_list "(&DAT_003ca520)" ( (pointer_expression "&DAT_003ca520" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b90f0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90f0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b90f0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca518);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca518)" identifier = (call_expression "FUN_00279460(&DAT_003ca518)" identifier (argument_list "(&DAT_003ca518)" ( (pointer_expression "&DAT_003ca518" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b9170;" (assignment_expression "*puVar2 = &PTR_FUN_003b9170" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b9170" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4e8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4e8)" identifier = (call_expression "FUN_00279460(&DAT_003ca4e8)" identifier (argument_list "(&DAT_003ca4e8)" ( (pointer_expression "&DAT_003ca4e8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" identifier = (call_expression "FUN_00275550(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) comment (expression_statement "FUN_00288110(lVar5,*param_2,param_4,0);" (call_expression "FUN_00288110(lVar5,*param_2,param_4,0)" identifier (argument_list "(lVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" { (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_00279460(&DAT_003ca4e0);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003ca4e0)" identifier = (call_expression "FUN_00279460(&DAT_003ca4e0)" identifier (argument_list "(&DAT_003ca4e0)" ( (pointer_expression "&DAT_003ca4e0" & identifier) )))) ;) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" * (cast_expression "(long *)(lVar3 + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar6 * 8)" ( (binary_expression "lVar3 + lVar6 * 8" identifier + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbd80;" (assignment_expression "*puVar2 = &PTR_FUN_003bbd80" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbd80" & identifier)) ;) comment (expression_statement "FUN_002bb7c0(puVar2,uVar4);" (call_expression "FUN_002bb7c0(puVar2,uVar4)" identifier (argument_list "(puVar2,uVar4)" ( identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc90);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc90)" identifier = (call_expression "FUN_00279460(&DAT_003cbc90)" identifier (argument_list "(&DAT_003cbc90)" ( (pointer_expression "&DAT_003cbc90" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bbc90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbc90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbc90" & identifier)) ;) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" identifier = (call_expression "FUN_002b7c50(local_40)" identifier (argument_list "(local_40)" ( 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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc58);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc58)" identifier = (call_expression "FUN_00279460(&DAT_003cbc58)" identifier (argument_list "(&DAT_003cbc58)" ( (pointer_expression "&DAT_003cbc58" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbf90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbf90" & identifier)) ;) comment (expression_statement "FUN_002bcf00(puVar2,uVar4,param_5);" (call_expression "FUN_002bcf00(puVar2,uVar4,param_5)" identifier (argument_list "(puVar2,uVar4,param_5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbcb0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbcb0)" identifier = (call_expression "FUN_00279460(&DAT_003cbcb0)" identifier (argument_list "(&DAT_003cbcb0)" ( (pointer_expression "&DAT_003cbcb0" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbf28;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf28" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbf28" & identifier)) ;) comment (expression_statement "FUN_002bc950(puVar2,uVar4,param_5);" (call_expression "FUN_002bc950(puVar2,uVar4,param_5)" identifier (argument_list "(puVar2,uVar4,param_5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca8)" identifier = (call_expression "FUN_00279460(&DAT_003cbca8)" identifier (argument_list "(&DAT_003cbca8)" ( (pointer_expression "&DAT_003cbca8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc1b0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1b0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc1b0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca0)" identifier = (call_expression "FUN_00279460(&DAT_003cbca0)" identifier (argument_list "(&DAT_003cbca0)" ( (pointer_expression "&DAT_003cbca0" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc1e0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1e0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc1e0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc98);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc98)" identifier = (call_expression "FUN_00279460(&DAT_003cbc98)" identifier (argument_list "(&DAT_003cbc98)" ( (pointer_expression "&DAT_003cbc98" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc260;" (assignment_expression "*puVar2 = &PTR_FUN_003bc260" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc260" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc68);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc68)" identifier = (call_expression "FUN_00279460(&DAT_003cbc68)" identifier (argument_list "(&DAT_003cbc68)" ( (pointer_expression "&DAT_003cbc68" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" identifier = (call_expression "FUN_00275550(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) comment (expression_statement "FUN_002c30d0(lVar5,*param_2,param_4,0);" (call_expression "FUN_002c30d0(lVar5,*param_2,param_4,0)" identifier (argument_list "(lVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" { (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_00279460(&DAT_003cbc60);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003cbc60)" identifier = (call_expression "FUN_00279460(&DAT_003cbc60)" identifier (argument_list "(&DAT_003cbc60)" ( (pointer_expression "&DAT_003cbc60" & identifier) )))) ;) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" * (cast_expression "(long *)(lVar3 + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar6 * 8)" ( (binary_expression "lVar3 + lVar6 * 8" identifier + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* 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  long lVar1;\n  char *pcVar2;\n  undefined *puVar3;\n  numpunct<char> *this;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  __locale_struct *p_Var7;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_40 [2];\n  \n  this = (numpunct<char> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined8 *)(this + 0x10) = 0;\n  *(undefined ***)this = &PTR__numpunct_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  numpunct<char>::_M_initialize_numpunct(this,p_Var7);\n  puVar3 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<char>::id);\n  *(numpunct<char> **)(lVar1 + lVar4 * 8) = this;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003b8c20;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<char>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003b90c0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003b90f0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003b9170;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_00 = (messages<char> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<char>::id);\n  *(messages<char> **)(lVar1 + lVar4 * 8) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined8 *)(this_01 + 0x10) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<wchar_t>::id);\n  *(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003bbc90;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<wchar_t>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003bc1b0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003bc1e0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003bc260;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_02 = (messages<wchar_t> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<wchar_t>::id);\n  *(messages<wchar_t> **)(lVar1 + lVar4 * 8) = this_02;\n  return;\n}\n\n" 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  long lVar1;\n  char *pcVar2;\n  undefined *puVar3;\n  numpunct<char> *this;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  __locale_struct *p_Var7;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_40 [2];\n  \n  this = (numpunct<char> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined8 *)(this + 0x10) = 0;\n  *(undefined ***)this = &PTR__numpunct_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  numpunct<char>::_M_initialize_numpunct(this,p_Var7);\n  puVar3 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<char>::id);\n  *(numpunct<char> **)(lVar1 + lVar4 * 8) = this;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003b8c20;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<char>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003b90c0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003b90f0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003b9170;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_00 = (messages<char> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<char>::id);\n  *(messages<char> **)(lVar1 + lVar4 * 8) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined8 *)(this_01 + 0x10) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<wchar_t>::id);\n  *(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003bbc90;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<wchar_t>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003bc1b0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003bc1e0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003bc260;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_02 = (messages<wchar_t> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<wchar_t>::id);\n  *(messages<wchar_t> **)(lVar1 + lVar4 * 8) = 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  long lVar1;\n  char *pcVar2;\n  undefined *puVar3;\n  numpunct<char> *this;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  __locale_struct *p_Var7;\n  messages<char> *this_00;\n  numpunct<wchar_t> *this_01;\n  messages<wchar_t> *this_02;\n  __locale_struct *local_40 [2];\n  \n  this = (numpunct<char> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined8 *)(this + 0x10) = 0;\n  *(undefined ***)this = &PTR__numpunct_003b8c90;\n                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */\n  numpunct<char>::_M_initialize_numpunct(this,p_Var7);\n  puVar3 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<char>::id);\n  *(numpunct<char> **)(lVar1 + lVar4 * 8) = this;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003b8c20;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<char>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0;\n                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */\n  moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  pcVar2 = *param_2;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38;\n                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */\n  moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<char,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003b90c0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003b90f0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003b9170;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_00 = (messages<char> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */\n  messages<char>::messages(this_00,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<char>::id);\n  *(messages<char> **)(lVar1 + lVar4 * 8) = this_00;\n  this_01 = (numpunct<wchar_t> *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  p_Var7 = *param_2;\n  *(undefined4 *)(this_01 + 8) = 0;\n  *(undefined8 *)(this_01 + 0x10) = 0;\n  *(undefined ***)this_01 = &PTR__numpunct_003bbd80;\n                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */\n  numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&numpunct<wchar_t>::id);\n  *(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01;\n  puVar5 = (undefined8 *)operator_new(0x18);\n                    /* WARNING: Load size is inaccurate */\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__collate_003bbc90;\n  uVar6 = facet::_S_clone_c_locale(local_40);\n  puVar5[2] = uVar6;\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&collate<wchar_t>::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90;\n                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */\n  moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,false>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  p_Var7 = (__locale_struct *)operator_new(0x18);\n  pcVar2 = *(char **)param_3;\n  *(undefined4 *)(p_Var7->__locales + 1) = 0;\n  p_Var7->__locales[2] = (__locale_data *)0x0;\n  p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28;\n                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */\n  moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  *(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_get_003bc1b0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__money_put_003bc1e0;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  puVar5 = (undefined8 *)operator_new(0x10);\n  *(undefined4 *)(puVar5 + 1) = 0;\n  *puVar5 = &PTR__time_get_003bc260;\n  if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);\n  *(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;\n  this_02 = (messages<wchar_t> *)operator_new(0x20);\n                    /* WARNING: Load size is inaccurate */\n                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */\n  messages<wchar_t>::messages(this_02,*param_2,param_4,0);\n  if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }\n  lVar1 = *(long *)((long)param_1 + 8);\n  lVar4 = locale::id::_M_id((id *)&messages<wchar_t>::id);\n  *(messages<wchar_t> **)(lVar1 + lVar4 * 8) = this_02;\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "numpunct<char> *this;" (binary_expression "numpunct<char> *this" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*this" * identifier)) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "__locale_struct *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * 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_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "this = (numpunct<char> *)operator_new(0x18);" (assignment_expression "this = (numpunct<char> *)operator_new(0x18)" identifier = (parenthesized_expression "(numpunct<char> *)operator_new(0x18)" ( (binary_expression "numpunct<char> *)operator_new(0x18)" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "*)operator_new(0x18)" * (ERROR ")" )) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ))) ;) comment (expression_statement "p_Var7 = *param_2;" (assignment_expression "p_Var7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (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 "*(undefined8 *)(this + 0x10) = 0;" (assignment_expression "*(undefined8 *)(this + 0x10) = 0" (pointer_expression "*(undefined8 *)(this + 0x10)" * (cast_expression "(undefined8 *)(this + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this = &PTR__numpunct_003b8c90;" (assignment_expression "*(undefined ***)this = &PTR__numpunct_003b8c90" (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_003b8c90" & identifier)) ;) comment (expression_statement "numpunct<char>::_M_initialize_numpunct(this,p_Var7);" (binary_expression "numpunct<char>::_M_initialize_numpunct(this,p_Var7)" (binary_expression "numpunct<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct(this,p_Var7)" identifier (argument_list "(this,p_Var7)" ( identifier , identifier )))) ;) (expression_statement "puVar3 = PTR___pthread_key_create_003bdee8;" (assignment_expression "puVar3 = PTR___pthread_key_create_003bdee8" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(PTR___pthread_key_create_003bdee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003bdee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n  }" { (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this + 8) = *(int *)(this + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this + 8) = *(int *)(this + 8) + 1;" (assignment_expression "*(int *)(this + 8) = *(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 8) + 1" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&numpunct<char>::id);" statement_identifier (ERROR "::_M_id((id *)&numpunct<char>:" : : identifier ( (binary_expression "(id *)&numpunct<char" (cast_expression "(id *)&numpunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&numpunct" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(numpunct<char> **)(lVar1 + lVar4 * 8) = this;" (assignment_expression "*(numpunct<char> **)(lVar1 + lVar4 * 8) = this" (pointer_expression "*(numpunct<char> **)(lVar1 + lVar4 * 8)" * (call_expression "(numpunct<char> **)(lVar1 + lVar4 * 8)" (parenthesized_expression "(numpunct<char> **)" ( (binary_expression "numpunct<char> **" (binary_expression "numpunct<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x18);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x18)" identifier = (cast_expression "(undefined8 *)operator_new(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) comment (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__collate_003b8c20;" (assignment_expression "*puVar5 = &PTR__collate_003b8c20" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__collate_003b8c20" & identifier)) ;) (ERROR "uVar6 = facet::" (assignment_expression "uVar6 = facet" identifier = identifier) : :) (expression_statement "_S_clone_c_locale(local_40);" (call_expression "_S_clone_c_locale(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "puVar5[2] = uVar6;" (assignment_expression "puVar5[2] = uVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&collate<char>::id);" statement_identifier (ERROR "::_M_id((id *)&collate<char>:" : : identifier ( (binary_expression "(id *)&collate<char" (cast_expression "(id *)&collate" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&collate" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var7 = (__locale_struct *)operator_new(0x18);" (assignment_expression "p_Var7 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) comment (expression_statement "pcVar2 = *param_2;" (assignment_expression "pcVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(p_Var7->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(p_Var7->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(p_Var7->__locales + 1)" * (cast_expression "(undefined4 *)(p_Var7->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "p_Var7->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var7->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var7->__locales[2]" (field_expression "p_Var7->__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_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0;" (assignment_expression "p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8ea0" (subscript_expression "p_Var7->__locales[0]" (field_expression "p_Var7->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003b8ea0" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003b8ea0" & identifier))) ;) comment (expression_statement "moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2);" (comma_expression "moneypunct<char,false>::_M_initialize_moneypunct(p_Var7,pcVar2)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var7,pcVar2)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var7,pcVar2)" identifier (argument_list "(p_Var7,pcVar2)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }" { (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<char,false>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<char,false>::id);" (call_expression "_M_id((id *)&moneypunct<char,false>::id)" identifier (argument_list "((id *)&moneypunct<char,false>::id)" ( (binary_expression "(id *)&moneypunct<char" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "false>::id" false > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;" (assignment_expression "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7" (pointer_expression "*(__locale_struct **)(lVar1 + lVar4 * 8)" * (cast_expression "(__locale_struct **)(lVar1 + lVar4 * 8)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var7 = (__locale_struct *)operator_new(0x18);" (assignment_expression "p_Var7 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) comment (expression_statement "pcVar2 = *param_2;" (assignment_expression "pcVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(p_Var7->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(p_Var7->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(p_Var7->__locales + 1)" * (cast_expression "(undefined4 *)(p_Var7->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "p_Var7->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var7->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var7->__locales[2]" (field_expression "p_Var7->__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_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38;" (assignment_expression "p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003b8e38" (subscript_expression "p_Var7->__locales[0]" (field_expression "p_Var7->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003b8e38" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003b8e38" & identifier))) ;) comment (expression_statement "moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2);" (comma_expression "moneypunct<char,true>::_M_initialize_moneypunct(p_Var7,pcVar2)" (binary_expression "moneypunct<char" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var7,pcVar2)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var7,pcVar2)" identifier (argument_list "(p_Var7,pcVar2)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }" { (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<char,true>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<char,true>::id);" (call_expression "_M_id((id *)&moneypunct<char,true>::id)" identifier (argument_list "((id *)&moneypunct<char,true>::id)" ( (binary_expression "(id *)&moneypunct<char" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "true>::id" true > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;" (assignment_expression "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7" (pointer_expression "*(__locale_struct **)(lVar1 + lVar4 * 8)" * (cast_expression "(__locale_struct **)(lVar1 + lVar4 * 8)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__money_get_003b90c0;" (assignment_expression "*puVar5 = &PTR__money_get_003b90c0" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__money_get_003b90c0" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&money_get<char,std::istreambuf_iterator<char,std:" : : identifier ( (binary_expression "(id *)&money_get<char" (cast_expression "(id *)&money_get" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&money_get" & identifier)) < identifier) , identifier : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>\n                                   ::id);" (binary_expression "char_traits<char>>>\n                                   ::id" identifier < (binary_expression "char>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__money_put_003b90f0;" (assignment_expression "*puVar5 = &PTR__money_put_003b90f0" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__money_put_003b90f0" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&money_put<char,std::ostreambuf_iterator<char,std:" : : identifier ( (binary_expression "(id *)&money_put<char" (cast_expression "(id *)&money_put" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&money_put" & identifier)) < identifier) , identifier : : (comma_expression "ostreambuf_iterator<char,std" (binary_expression "ostreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>\n                                   ::id);" (binary_expression "char_traits<char>>>\n                                   ::id" identifier < (binary_expression "char>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__time_get_003b9170;" (assignment_expression "*puVar5 = &PTR__time_get_003b9170" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__time_get_003b9170" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&time_get<char,std::istreambuf_iterator<char,std:" : : identifier ( (binary_expression "(id *)&time_get<char" (cast_expression "(id *)&time_get" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&time_get" & identifier)) < identifier) , identifier : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>\n                                   ::id);" (binary_expression "char_traits<char>>>\n                                   ::id" identifier < (binary_expression "char>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_00 = (messages<char> *)operator_new(0x20);" (assignment_expression "this_00 = (messages<char> *)operator_new(0x20)" identifier = (parenthesized_expression "(messages<char> *)operator_new(0x20)" ( (binary_expression "messages<char> *)operator_new(0x20)" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "*)operator_new(0x20)" * (ERROR ")" )) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( 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 (puVar3 == (undefined *)0x0) {\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n  }" { (expression_statement "*(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;" (assignment_expression "*(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1" (pointer_expression "*(int *)(this_00 + 8)" * (cast_expression "(int *)(this_00 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 8)" ( (binary_expression "this_00 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_00 + 8) + 1" (pointer_expression "*(int *)(this_00 + 8)" * (cast_expression "(int *)(this_00 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 8)" ( (binary_expression "this_00 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1;" (assignment_expression "*(int *)(this_00 + 8) = *(int *)(this_00 + 8) + 1" (pointer_expression "*(int *)(this_00 + 8)" * (cast_expression "(int *)(this_00 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 8)" ( (binary_expression "this_00 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_00 + 8) + 1" (pointer_expression "*(int *)(this_00 + 8)" * (cast_expression "(int *)(this_00 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_00 + 8)" ( (binary_expression "this_00 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&messages<char>::id);" statement_identifier (ERROR "::_M_id((id *)&messages<char>:" : : identifier ( (binary_expression "(id *)&messages<char" (cast_expression "(id *)&messages" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&messages" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(messages<char> **)(lVar1 + lVar4 * 8) = this_00;" (assignment_expression "*(messages<char> **)(lVar1 + lVar4 * 8) = this_00" (pointer_expression "*(messages<char> **)(lVar1 + lVar4 * 8)" * (call_expression "(messages<char> **)(lVar1 + lVar4 * 8)" (parenthesized_expression "(messages<char> **)" ( (binary_expression "messages<char> **" (binary_expression "messages<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_01 = (numpunct<wchar_t> *)operator_new(0x18);" (assignment_expression "this_01 = (numpunct<wchar_t> *)operator_new(0x18)" identifier = (parenthesized_expression "(numpunct<wchar_t> *)operator_new(0x18)" ( (binary_expression "numpunct<wchar_t> *)operator_new(0x18)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "*)operator_new(0x18)" * (ERROR ")" )) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ))) ;) comment (expression_statement "p_Var7 = *param_2;" (assignment_expression "p_Var7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (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 "*(undefined8 *)(this_01 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(this_01 + 0x10) = 0" (pointer_expression "*(undefined8 *)(this_01 + 0x10)" * (cast_expression "(undefined8 *)(this_01 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 0x10)" ( (binary_expression "this_01 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this_01 = &PTR__numpunct_003bbd80;" (assignment_expression "*(undefined ***)this_01 = &PTR__numpunct_003bbd80" (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_003bbd80" & identifier)) ;) comment (expression_statement "numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7);" (binary_expression "numpunct<wchar_t>::_M_initialize_numpunct(this_01,p_Var7)" (binary_expression "numpunct<wchar_t" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_initialize_numpunct(this_01,p_Var7)" identifier (argument_list "(this_01,p_Var7)" ( identifier , identifier )))) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n  }" { (expression_statement "*(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;" (assignment_expression "*(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1" (pointer_expression "*(int *)(this_01 + 8)" * (cast_expression "(int *)(this_01 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 8)" ( (binary_expression "this_01 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_01 + 8) + 1" (pointer_expression "*(int *)(this_01 + 8)" * (cast_expression "(int *)(this_01 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 8)" ( (binary_expression "this_01 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1;" (assignment_expression "*(int *)(this_01 + 8) = *(int *)(this_01 + 8) + 1" (pointer_expression "*(int *)(this_01 + 8)" * (cast_expression "(int *)(this_01 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 8)" ( (binary_expression "this_01 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_01 + 8) + 1" (pointer_expression "*(int *)(this_01 + 8)" * (cast_expression "(int *)(this_01 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_01 + 8)" ( (binary_expression "this_01 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&numpunct<wchar_t>::id);" statement_identifier (ERROR "::_M_id((id *)&numpunct<wchar_t>:" : : identifier ( (binary_expression "(id *)&numpunct<wchar_t" (cast_expression "(id *)&numpunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&numpunct" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01;" (assignment_expression "*(numpunct<wchar_t> **)(lVar1 + lVar4 * 8) = this_01" (pointer_expression "*(numpunct<wchar_t> **)(lVar1 + lVar4 * 8)" * (call_expression "(numpunct<wchar_t> **)(lVar1 + lVar4 * 8)" (parenthesized_expression "(numpunct<wchar_t> **)" ( (binary_expression "numpunct<wchar_t> **" (binary_expression "numpunct<wchar_t" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x18);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x18)" identifier = (cast_expression "(undefined8 *)operator_new(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) comment (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__collate_003bbc90;" (assignment_expression "*puVar5 = &PTR__collate_003bbc90" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__collate_003bbc90" & identifier)) ;) (ERROR "uVar6 = facet::" (assignment_expression "uVar6 = facet" identifier = identifier) : :) (expression_statement "_S_clone_c_locale(local_40);" (call_expression "_S_clone_c_locale(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "puVar5[2] = uVar6;" (assignment_expression "puVar5[2] = uVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&collate<wchar_t>::id);" statement_identifier (ERROR "::_M_id((id *)&collate<wchar_t>:" : : identifier ( (binary_expression "(id *)&collate<wchar_t" (cast_expression "(id *)&collate" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&collate" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var7 = (__locale_struct *)operator_new(0x18);" (assignment_expression "p_Var7 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "pcVar2 = *(char **)param_3;" (assignment_expression "pcVar2 = *(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))) ;) (expression_statement "*(undefined4 *)(p_Var7->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(p_Var7->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(p_Var7->__locales + 1)" * (cast_expression "(undefined4 *)(p_Var7->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "p_Var7->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var7->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var7->__locales[2]" (field_expression "p_Var7->__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_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90;" (assignment_expression "p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf90" (subscript_expression "p_Var7->__locales[0]" (field_expression "p_Var7->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003bbf90" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003bbf90" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2);" (comma_expression "moneypunct<wchar_t,false>::_M_initialize_moneypunct(p_Var7,pcVar2)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "false>::_M_initialize_moneypunct(p_Var7,pcVar2)" false > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var7,pcVar2)" identifier (argument_list "(p_Var7,pcVar2)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }" { (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<wchar_t,false>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<wchar_t,false>::id);" (call_expression "_M_id((id *)&moneypunct<wchar_t,false>::id)" identifier (argument_list "((id *)&moneypunct<wchar_t,false>::id)" ( (binary_expression "(id *)&moneypunct<wchar_t" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "false>::id" false > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;" (assignment_expression "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7" (pointer_expression "*(__locale_struct **)(lVar1 + lVar4 * 8)" * (cast_expression "(__locale_struct **)(lVar1 + lVar4 * 8)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "p_Var7 = (__locale_struct *)operator_new(0x18);" (assignment_expression "p_Var7 = (__locale_struct *)operator_new(0x18)" identifier = (cast_expression "(__locale_struct *)operator_new(0x18)" ( (type_descriptor "__locale_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "pcVar2 = *(char **)param_3;" (assignment_expression "pcVar2 = *(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))) ;) (expression_statement "*(undefined4 *)(p_Var7->__locales + 1) = 0;" (assignment_expression "*(undefined4 *)(p_Var7->__locales + 1) = 0" (pointer_expression "*(undefined4 *)(p_Var7->__locales + 1)" * (cast_expression "(undefined4 *)(p_Var7->__locales + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "p_Var7->__locales[2] = (__locale_data *)0x0;" (assignment_expression "p_Var7->__locales[2] = (__locale_data *)0x0" (subscript_expression "p_Var7->__locales[2]" (field_expression "p_Var7->__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_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28;" (assignment_expression "p_Var7->__locales[0] = (__locale_data *)&PTR__moneypunct_003bbf28" (subscript_expression "p_Var7->__locales[0]" (field_expression "p_Var7->__locales" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(__locale_data *)&PTR__moneypunct_003bbf28" ( (type_descriptor "__locale_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__moneypunct_003bbf28" & identifier))) ;) comment (expression_statement "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2);" (comma_expression "moneypunct<wchar_t,true>::_M_initialize_moneypunct(p_Var7,pcVar2)" (binary_expression "moneypunct<wchar_t" identifier < identifier) , (binary_expression "true>::_M_initialize_moneypunct(p_Var7,pcVar2)" true > (ERROR "::" : :) (call_expression "_M_initialize_moneypunct(p_Var7,pcVar2)" identifier (argument_list "(p_Var7,pcVar2)" ( identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n  }" { (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;" (assignment_expression "*(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) = (binary_expression "*(int *)(p_Var7->__locales + 1) + 1" (pointer_expression "*(int *)(p_Var7->__locales + 1)" * (cast_expression "(int *)(p_Var7->__locales + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var7->__locales + 1)" ( (binary_expression "p_Var7->__locales + 1" (field_expression "p_Var7->__locales" identifier -> field_identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<wchar_t,true>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<wchar_t,true>::id);" (call_expression "_M_id((id *)&moneypunct<wchar_t,true>::id)" identifier (argument_list "((id *)&moneypunct<wchar_t,true>::id)" ( (binary_expression "(id *)&moneypunct<wchar_t" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "true>::id" true > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7;" (assignment_expression "*(__locale_struct **)(lVar1 + lVar4 * 8) = p_Var7" (pointer_expression "*(__locale_struct **)(lVar1 + lVar4 * 8)" * (cast_expression "(__locale_struct **)(lVar1 + lVar4 * 8)" ( (type_descriptor "__locale_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__money_get_003bc1b0;" (assignment_expression "*puVar5 = &PTR__money_get_003bc1b0" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__money_get_003bc1b0" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&money_get<wchar_t,std::istreambuf_iterator<wchar_t,std:" : : identifier ( (binary_expression "(id *)&money_get<wchar_t" (cast_expression "(id *)&money_get" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&money_get" & identifier)) < identifier) , identifier : : (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>\n                                   ::id);" (binary_expression "char_traits<wchar_t>>>\n                                   ::id" identifier < (binary_expression "wchar_t>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__money_put_003bc1e0;" (assignment_expression "*puVar5 = &PTR__money_put_003bc1e0" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__money_put_003bc1e0" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&money_put<wchar_t,std::ostreambuf_iterator<wchar_t,std:" : : identifier ( (binary_expression "(id *)&money_put<wchar_t" (cast_expression "(id *)&money_put" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&money_put" & identifier)) < identifier) , identifier : : (comma_expression "ostreambuf_iterator<wchar_t,std" (binary_expression "ostreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>\n                                   ::id);" (binary_expression "char_traits<wchar_t>>>\n                                   ::id" identifier < (binary_expression "wchar_t>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar5 = (undefined8 *)operator_new(0x10);" (assignment_expression "puVar5 = (undefined8 *)operator_new(0x10)" identifier = (cast_expression "(undefined8 *)operator_new(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar5 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar5 = &PTR__time_get_003bc260;" (assignment_expression "*puVar5 = &PTR__time_get_003bc260" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR__time_get_003bc260" & identifier)) ;) (if_statement "if (puVar3 == (undefined *)0x0) {\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)(puVar5 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar5 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar5 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar5 + 1)" * (cast_expression "(undefined4 *)(puVar5 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;" (assignment_expression "*(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar5 + 1) + 1" (pointer_expression "*(int *)(puVar5 + 1)" * (cast_expression "(int *)(puVar5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>\n                                   ::id);" statement_identifier (ERROR "::_M_id((id *)&time_get<wchar_t,std::istreambuf_iterator<wchar_t,std:" : : identifier ( (binary_expression "(id *)&time_get<wchar_t" (cast_expression "(id *)&time_get" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&time_get" & identifier)) < identifier) , identifier : : (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>\n                                   ::id);" (binary_expression "char_traits<wchar_t>>>\n                                   ::id" identifier < (binary_expression "wchar_t>>>\n                                   ::id" identifier >> (ERROR ">\n                                   ::" > : :) identifier)) (ERROR ")" )) ;)) (expression_statement "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5;" (assignment_expression "*(undefined8 **)(lVar1 + lVar4 * 8) = puVar5" (pointer_expression "*(undefined8 **)(lVar1 + lVar4 * 8)" * (cast_expression "(undefined8 **)(lVar1 + lVar4 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "this_02 = (messages<wchar_t> *)operator_new(0x20);" (assignment_expression "this_02 = (messages<wchar_t> *)operator_new(0x20)" identifier = (parenthesized_expression "(messages<wchar_t> *)operator_new(0x20)" ( (binary_expression "messages<wchar_t> *)operator_new(0x20)" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "*)operator_new(0x20)" * (ERROR ")" )) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( 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 (puVar3 == (undefined *)0x0) {\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(puVar3 == (undefined *)0x0)" ( (binary_expression "puVar3 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n  }" { (expression_statement "*(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;" (assignment_expression "*(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1" (pointer_expression "*(int *)(this_02 + 8)" * (cast_expression "(int *)(this_02 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 8)" ( (binary_expression "this_02 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_02 + 8) + 1" (pointer_expression "*(int *)(this_02 + 8)" * (cast_expression "(int *)(this_02 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 8)" ( (binary_expression "this_02 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1;" (assignment_expression "*(int *)(this_02 + 8) = *(int *)(this_02 + 8) + 1" (pointer_expression "*(int *)(this_02 + 8)" * (cast_expression "(int *)(this_02 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 8)" ( (binary_expression "this_02 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(this_02 + 8) + 1" (pointer_expression "*(int *)(this_02 + 8)" * (cast_expression "(int *)(this_02 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this_02 + 8)" ( (binary_expression "this_02 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar1 = *(long *)((long)param_1 + 8);" (assignment_expression "lVar1 = *(long *)((long)param_1 + 8)" identifier = (pointer_expression "*(long *)((long)param_1 + 8)" * (cast_expression "(long *)((long)param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 8)" ( (binary_expression "(long)param_1 + 8" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (ERROR "lVar4 = locale::" (assignment_expression "lVar4 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&messages<wchar_t>::id);" statement_identifier (ERROR "::_M_id((id *)&messages<wchar_t>:" : : identifier ( (binary_expression "(id *)&messages<wchar_t" (cast_expression "(id *)&messages" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&messages" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "*(messages<wchar_t> **)(lVar1 + lVar4 * 8) = this_02;" (assignment_expression "*(messages<wchar_t> **)(lVar1 + lVar4 * 8) = this_02" (pointer_expression "*(messages<wchar_t> **)(lVar1 + lVar4 * 8)" * (call_expression "(messages<wchar_t> **)(lVar1 + lVar4 * 8)" (parenthesized_expression "(messages<wchar_t> **)" ( (binary_expression "messages<wchar_t> **" (binary_expression "messages<wchar_t" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar1 + lVar4 * 8)" ( (binary_expression "lVar1 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    \n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    \n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    \n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    \n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    \n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    \n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}\n\n" (function_definition "void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    \n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    \n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    \n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    \n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    \n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    \n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" primitive_type (function_declarator "FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    \n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    \n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    \n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    \n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    \n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    \n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8c90;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8c90" & identifier)) ;) (expression_statement "FUN_002bb4f0(puVar2,uVar4);" (call_expression "FUN_002bb4f0(puVar2,uVar4)" identifier (argument_list "(puVar2,uVar4)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR___pthread_key_create_003bdee8;" (assignment_expression "puVar1 = PTR___pthread_key_create_003bdee8" identifier = identifier) ;) (if_statement "if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" if (parenthesized_expression "(PTR___pthread_key_create_003bdee8 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_003bdee8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca510);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca510)" identifier = (call_expression "FUN_00279460(&DAT_003ca510)" identifier (argument_list "(&DAT_003ca510)" ( (pointer_expression "&DAT_003ca510" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b8c20;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8c20" & identifier)) ;) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" identifier = (call_expression "FUN_002b7c50(local_40)" identifier (argument_list "(local_40)" ( 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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4d8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4d8)" identifier = (call_expression "FUN_00279460(&DAT_003ca4d8)" identifier (argument_list "(&DAT_003ca4d8)" ( (pointer_expression "&DAT_003ca4d8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8ea0;" (assignment_expression "*puVar2 = &PTR_FUN_003b8ea0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8ea0" & identifier)) ;) (expression_statement "FUN_002bc230(puVar2,uVar4,0);" (call_expression "FUN_002bc230(puVar2,uVar4,0)" identifier (argument_list "(puVar2,uVar4,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca530);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca530)" identifier = (call_expression "FUN_00279460(&DAT_003ca530)" identifier (argument_list "(&DAT_003ca530)" ( (pointer_expression "&DAT_003ca530" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003b8e38;" (assignment_expression "*puVar2 = &PTR_FUN_003b8e38" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b8e38" & identifier)) ;) (expression_statement "FUN_002bbd10(puVar2,uVar4,0);" (call_expression "FUN_002bbd10(puVar2,uVar4,0)" identifier (argument_list "(puVar2,uVar4,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca528);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca528)" identifier = (call_expression "FUN_00279460(&DAT_003ca528)" identifier (argument_list "(&DAT_003ca528)" ( (pointer_expression "&DAT_003ca528" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b90c0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90c0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b90c0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca520);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca520)" identifier = (call_expression "FUN_00279460(&DAT_003ca520)" identifier (argument_list "(&DAT_003ca520)" ( (pointer_expression "&DAT_003ca520" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b90f0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90f0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b90f0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca518);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca518)" identifier = (call_expression "FUN_00279460(&DAT_003ca518)" identifier (argument_list "(&DAT_003ca518)" ( (pointer_expression "&DAT_003ca518" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003b9170;" (assignment_expression "*puVar2 = &PTR_FUN_003b9170" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003b9170" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4e8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4e8)" identifier = (call_expression "FUN_00279460(&DAT_003ca4e8)" identifier (argument_list "(&DAT_003ca4e8)" ( (pointer_expression "&DAT_003ca4e8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" identifier = (call_expression "FUN_00275550(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) (expression_statement "FUN_00288110(lVar5,*param_2,param_4,0);" (call_expression "FUN_00288110(lVar5,*param_2,param_4,0)" identifier (argument_list "(lVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" { (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_00279460(&DAT_003ca4e0);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003ca4e0)" identifier = (call_expression "FUN_00279460(&DAT_003ca4e0)" identifier (argument_list "(&DAT_003ca4e0)" ( (pointer_expression "&DAT_003ca4e0" & identifier) )))) ;) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" * (cast_expression "(long *)(lVar3 + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar6 * 8)" ( (binary_expression "lVar3 + lVar6 * 8" identifier + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbd80;" (assignment_expression "*puVar2 = &PTR_FUN_003bbd80" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbd80" & identifier)) ;) (expression_statement "FUN_002bb7c0(puVar2,uVar4);" (call_expression "FUN_002bb7c0(puVar2,uVar4)" identifier (argument_list "(puVar2,uVar4)" ( identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc90);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc90)" identifier = (call_expression "FUN_00279460(&DAT_003cbc90)" identifier (argument_list "(&DAT_003cbc90)" ( (pointer_expression "&DAT_003cbc90" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bbc90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbc90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbc90" & identifier)) ;) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" identifier = (call_expression "FUN_002b7c50(local_40)" identifier (argument_list "(local_40)" ( 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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc58);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc58)" identifier = (call_expression "FUN_00279460(&DAT_003cbc58)" identifier (argument_list "(&DAT_003cbc58)" ( (pointer_expression "&DAT_003cbc58" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbf90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf90" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbf90" & identifier)) ;) (expression_statement "FUN_002bcf00(puVar2,uVar4,param_5);" (call_expression "FUN_002bcf00(puVar2,uVar4,param_5)" identifier (argument_list "(puVar2,uVar4,param_5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbcb0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbcb0)" identifier = (call_expression "FUN_00279460(&DAT_003cbcb0)" identifier (argument_list "(&DAT_003cbcb0)" ( (pointer_expression "&DAT_003cbcb0" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_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_003bbf28;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf28" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bbf28" & identifier)) ;) (expression_statement "FUN_002bc950(puVar2,uVar4,param_5);" (call_expression "FUN_002bc950(puVar2,uVar4,param_5)" identifier (argument_list "(puVar2,uVar4,param_5)" ( identifier , identifier , identifier ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" { (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca8)" identifier = (call_expression "FUN_00279460(&DAT_003cbca8)" identifier (argument_list "(&DAT_003cbca8)" ( (pointer_expression "&DAT_003cbca8" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc1b0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1b0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc1b0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca0)" identifier = (call_expression "FUN_00279460(&DAT_003cbca0)" identifier (argument_list "(&DAT_003cbca0)" ( (pointer_expression "&DAT_003cbca0" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc1e0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1e0" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc1e0" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc98);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc98)" identifier = (call_expression "FUN_00279460(&DAT_003cbc98)" identifier (argument_list "(&DAT_003cbc98)" ( (pointer_expression "&DAT_003cbc98" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar2 = &PTR_FUN_003bc260;" (assignment_expression "*puVar2 = &PTR_FUN_003bc260" (pointer_expression "*puVar2" * identifier) = (pointer_expression "&PTR_FUN_003bc260" & identifier)) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" { (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" * (cast_expression "(undefined4 *)(puVar2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" * (cast_expression "(int *)(puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc68);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc68)" identifier = (call_expression "FUN_00279460(&DAT_003cbc68)" identifier (argument_list "(&DAT_003cbc68)" ( (pointer_expression "&DAT_003cbc68" & identifier) )))) ;) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" * (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + lVar3 * 8)" ( (binary_expression "lVar5 + lVar3 * 8" identifier + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" identifier = (call_expression "FUN_00275550(0x20)" identifier (argument_list "(0x20)" ( number_literal )))) ;) (expression_statement "FUN_002c30d0(lVar5,*param_2,param_4,0);" (call_expression "FUN_002c30d0(lVar5,*param_2,param_4,0)" identifier (argument_list "(lVar5,*param_2,param_4,0)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , number_literal ))) ;) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" { (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" else (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" * (cast_expression "(int *)(lVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_00279460(&DAT_003cbc60);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003cbc60)" identifier = (call_expression "FUN_00279460(&DAT_003cbc60)" identifier (argument_list "(&DAT_003cbc60)" ( (pointer_expression "&DAT_003cbc60" & identifier) )))) ;) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" * (cast_expression "(long *)(lVar3 + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar6 * 8)" ( (binary_expression "lVar3 + lVar6 * 8" identifier + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (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) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    \n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    \n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    \n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    \n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    \n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    \n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002f4380(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" (identifier "FUN_002f4380") (parameter_list "(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,\n                 undefined8 param_5)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined8 *puVar2;\n  long lVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 local_40 [2];\n  \n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8c90;\n                    \n  FUN_002bb4f0(puVar2,uVar4);\n  puVar1 = PTR___pthread_key_create_003bdee8;\n  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca510);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b8c20;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4d8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8ea0;\n                    \n  FUN_002bc230(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca530);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003b8e38;\n                    \n  FUN_002bbd10(puVar2,uVar4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca528);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90c0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca520);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b90f0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca518);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003b9170;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003ca4e8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_00288110(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003ca4e0);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbd80;\n                    \n  FUN_002bb7c0(puVar2,uVar4);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc90);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  local_40[0] = *param_2;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bbc90;\n  uVar4 = FUN_002b7c50(local_40);\n  puVar2[2] = uVar4;\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc58);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf90;\n                    \n  FUN_002bcf00(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbcb0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x18);\n  uVar4 = *param_3;\n  *(undefined4 *)(puVar2 + 1) = 0;\n  puVar2[2] = 0;\n  *puVar2 = &PTR_FUN_003bbf28;\n                    \n  FUN_002bc950(puVar2,uVar4,param_5);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca8);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1b0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbca0);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc1e0;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc98);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  puVar2 = (undefined8 *)FUN_00275550(0x10);\n  *(undefined4 *)(puVar2 + 1) = 0;\n  *puVar2 = &PTR_FUN_003bc260;\n  if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }\n  lVar5 = *(long *)(param_1 + 8);\n  lVar3 = FUN_00279460(&DAT_003cbc68);\n  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;\n  lVar5 = FUN_00275550(0x20);\n                    \n  FUN_002c30d0(lVar5,*param_2,param_4,0);\n  if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }\n  lVar3 = *(long *)(param_1 + 8);\n  lVar6 = FUN_00279460(&DAT_003cbc60);\n  *(long *)(lVar3 + lVar6 * 8) = lVar5;\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 local_40 [2];" (type_identifier "undefined8") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003b8c90;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c90" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b8c90" (& "&") (identifier "PTR_FUN_003b8c90"))) (; ";")) (expression_statement "FUN_002bb4f0(puVar2,uVar4);" (call_expression "FUN_002bb4f0(puVar2,uVar4)" (identifier "FUN_002bb4f0") (argument_list "(puVar2,uVar4)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "puVar1 = PTR___pthread_key_create_003bdee8;" (assignment_expression "puVar1 = PTR___pthread_key_create_003bdee8" (identifier "puVar1") (= "=") (identifier "PTR___pthread_key_create_003bdee8")) (; ";")) (if_statement "if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_003bdee8 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_003bdee8 == (undefined *)0x0" (identifier "PTR___pthread_key_create_003bdee8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca510);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca510)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca510)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca510)" (( "(") (pointer_expression "&DAT_003ca510" (& "&") (identifier "DAT_003ca510")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003b8c20;" (assignment_expression "*puVar2 = &PTR_FUN_003b8c20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b8c20" (& "&") (identifier "PTR_FUN_003b8c20"))) (; ";")) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" (identifier "uVar4") (= "=") (call_expression "FUN_002b7c50(local_40)" (identifier "FUN_002b7c50") (argument_list "(local_40)" (( "(") (identifier "local_40") () ")")))) (; ";")) (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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4d8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4d8)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca4d8)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca4d8)" (( "(") (pointer_expression "&DAT_003ca4d8" (& "&") (identifier "DAT_003ca4d8")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003b8ea0;" (assignment_expression "*puVar2 = &PTR_FUN_003b8ea0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b8ea0" (& "&") (identifier "PTR_FUN_003b8ea0"))) (; ";")) (expression_statement "FUN_002bc230(puVar2,uVar4,0);" (call_expression "FUN_002bc230(puVar2,uVar4,0)" (identifier "FUN_002bc230") (argument_list "(puVar2,uVar4,0)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca530);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca530)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca530)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca530)" (( "(") (pointer_expression "&DAT_003ca530" (& "&") (identifier "DAT_003ca530")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003b8e38;" (assignment_expression "*puVar2 = &PTR_FUN_003b8e38" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b8e38" (& "&") (identifier "PTR_FUN_003b8e38"))) (; ";")) (expression_statement "FUN_002bbd10(puVar2,uVar4,0);" (call_expression "FUN_002bbd10(puVar2,uVar4,0)" (identifier "FUN_002bbd10") (argument_list "(puVar2,uVar4,0)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca528);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca528)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca528)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca528)" (( "(") (pointer_expression "&DAT_003ca528" (& "&") (identifier "DAT_003ca528")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003b90c0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90c0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b90c0" (& "&") (identifier "PTR_FUN_003b90c0"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca520);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca520)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca520)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca520)" (( "(") (pointer_expression "&DAT_003ca520" (& "&") (identifier "DAT_003ca520")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003b90f0;" (assignment_expression "*puVar2 = &PTR_FUN_003b90f0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b90f0" (& "&") (identifier "PTR_FUN_003b90f0"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca518);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca518)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca518)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca518)" (( "(") (pointer_expression "&DAT_003ca518" (& "&") (identifier "DAT_003ca518")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003b9170;" (assignment_expression "*puVar2 = &PTR_FUN_003b9170" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003b9170" (& "&") (identifier "PTR_FUN_003b9170"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003ca4e8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003ca4e8)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003ca4e8)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca4e8)" (( "(") (pointer_expression "&DAT_003ca4e8" (& "&") (identifier "DAT_003ca4e8")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" (identifier "lVar5") (= "=") (call_expression "FUN_00275550(0x20)" (identifier "FUN_00275550") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "FUN_00288110(lVar5,*param_2,param_4,0);" (call_expression "FUN_00288110(lVar5,*param_2,param_4,0)" (identifier "FUN_00288110") (argument_list "(lVar5,*param_2,param_4,0)" (( "(") (identifier "lVar5") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" ({ "{") (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar6 = FUN_00279460(&DAT_003ca4e0);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003ca4e0)" (identifier "lVar6") (= "=") (call_expression "FUN_00279460(&DAT_003ca4e0)" (identifier "FUN_00279460") (argument_list "(&DAT_003ca4e0)" (( "(") (pointer_expression "&DAT_003ca4e0" (& "&") (identifier "DAT_003ca4e0")) () ")")))) (; ";")) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" (* "*") (cast_expression "(long *)(lVar3 + lVar6 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar6 * 8)" (( "(") (binary_expression "lVar3 + lVar6 * 8" (identifier "lVar3") (+ "+") (binary_expression "lVar6 * 8" (identifier "lVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_2;" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003bbd80;" (assignment_expression "*puVar2 = &PTR_FUN_003bbd80" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bbd80" (& "&") (identifier "PTR_FUN_003bbd80"))) (; ";")) (expression_statement "FUN_002bb7c0(puVar2,uVar4);" (call_expression "FUN_002bb7c0(puVar2,uVar4)" (identifier "FUN_002bb7c0") (argument_list "(puVar2,uVar4)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc90);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc90)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbc90)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbc90)" (( "(") (pointer_expression "&DAT_003cbc90" (& "&") (identifier "DAT_003cbc90")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "local_40[0] = *param_2;" (assignment_expression "local_40[0] = *param_2" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003bbc90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbc90" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bbc90" (& "&") (identifier "PTR_FUN_003bbc90"))) (; ";")) (expression_statement "uVar4 = FUN_002b7c50(local_40);" (assignment_expression "uVar4 = FUN_002b7c50(local_40)" (identifier "uVar4") (= "=") (call_expression "FUN_002b7c50(local_40)" (identifier "FUN_002b7c50") (argument_list "(local_40)" (( "(") (identifier "local_40") () ")")))) (; ";")) (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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc58);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc58)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbc58)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbc58)" (( "(") (pointer_expression "&DAT_003cbc58" (& "&") (identifier "DAT_003cbc58")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" (identifier "uVar4") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003bbf90;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf90" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bbf90" (& "&") (identifier "PTR_FUN_003bbf90"))) (; ";")) (expression_statement "FUN_002bcf00(puVar2,uVar4,param_5);" (call_expression "FUN_002bcf00(puVar2,uVar4,param_5)" (identifier "FUN_002bcf00") (argument_list "(puVar2,uVar4,param_5)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") (, ",") (identifier "param_5") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbcb0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbcb0)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbcb0)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbcb0)" (( "(") (pointer_expression "&DAT_003cbcb0" (& "&") (identifier "DAT_003cbcb0")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x18);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x18)" (identifier "FUN_00275550") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "uVar4 = *param_3;" (assignment_expression "uVar4 = *param_3" (identifier "uVar4") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_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_003bbf28;" (assignment_expression "*puVar2 = &PTR_FUN_003bbf28" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bbf28" (& "&") (identifier "PTR_FUN_003bbf28"))) (; ";")) (expression_statement "FUN_002bc950(puVar2,uVar4,param_5);" (call_expression "FUN_002bc950(puVar2,uVar4,param_5)" (identifier "FUN_002bc950") (argument_list "(puVar2,uVar4,param_5)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar4") (, ",") (identifier "param_5") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n  }" ({ "{") (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca8);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca8)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbca8)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbca8)" (( "(") (pointer_expression "&DAT_003cbca8" (& "&") (identifier "DAT_003cbca8")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003bc1b0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1b0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bc1b0" (& "&") (identifier "PTR_FUN_003bc1b0"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbca0);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbca0)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbca0)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbca0)" (( "(") (pointer_expression "&DAT_003cbca0" (& "&") (identifier "DAT_003cbca0")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003bc1e0;" (assignment_expression "*puVar2 = &PTR_FUN_003bc1e0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bc1e0" (& "&") (identifier "PTR_FUN_003bc1e0"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc98);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc98)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbc98)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbc98)" (( "(") (pointer_expression "&DAT_003cbc98" (& "&") (identifier "DAT_003cbc98")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined8 *)FUN_00275550(0x10);" (assignment_expression "puVar2 = (undefined8 *)FUN_00275550(0x10)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x10)" (identifier "FUN_00275550") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar2 = &PTR_FUN_003bc260;" (assignment_expression "*puVar2 = &PTR_FUN_003bc260" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "&PTR_FUN_003bc260" (& "&") (identifier "PTR_FUN_003bc260"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(undefined4 *)(puVar2 + 1) = 1;\n  }\n  else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(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    *(undefined4 *)(puVar2 + 1) = 1;\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar2 + 1) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 1) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;" (assignment_expression "*(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(int *)(puVar2 + 1) + 1" (pointer_expression "*(int *)(puVar2 + 1)" (* "*") (cast_expression "(int *)(puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar5 = *(long *)(param_1 + 8);" (assignment_expression "lVar5 = *(long *)(param_1 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00279460(&DAT_003cbc68);" (assignment_expression "lVar3 = FUN_00279460(&DAT_003cbc68)" (identifier "lVar3") (= "=") (call_expression "FUN_00279460(&DAT_003cbc68)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbc68)" (( "(") (pointer_expression "&DAT_003cbc68" (& "&") (identifier "DAT_003cbc68")) () ")")))) (; ";")) (expression_statement "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;" (assignment_expression "*(undefined8 **)(lVar5 + lVar3 * 8) = puVar2" (pointer_expression "*(undefined8 **)(lVar5 + lVar3 * 8)" (* "*") (cast_expression "(undefined8 **)(lVar5 + lVar3 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + lVar3 * 8)" (( "(") (binary_expression "lVar5 + lVar3 * 8" (identifier "lVar5") (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "lVar5 = FUN_00275550(0x20);" (assignment_expression "lVar5 = FUN_00275550(0x20)" (identifier "lVar5") (= "=") (call_expression "FUN_00275550(0x20)" (identifier "FUN_00275550") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "FUN_002c30d0(lVar5,*param_2,param_4,0);" (call_expression "FUN_002c30d0(lVar5,*param_2,param_4,0)" (identifier "FUN_002c30d0") (argument_list "(lVar5,*param_2,param_4,0)" (( "(") (identifier "lVar5") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (puVar1 == (undefined *)0x0) {\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }\n  else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 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 *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n  }" ({ "{") (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" (else "else") (compound_statement "{\n    LOCK();\n    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;\n    UNLOCK();\n  }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;" (assignment_expression "*(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(lVar5 + 8) + 1" (pointer_expression "*(int *)(lVar5 + 8)" (* "*") (cast_expression "(int *)(lVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar3 = *(long *)(param_1 + 8);" (assignment_expression "lVar3 = *(long *)(param_1 + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar6 = FUN_00279460(&DAT_003cbc60);" (assignment_expression "lVar6 = FUN_00279460(&DAT_003cbc60)" (identifier "lVar6") (= "=") (call_expression "FUN_00279460(&DAT_003cbc60)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbc60)" (( "(") (pointer_expression "&DAT_003cbc60" (& "&") (identifier "DAT_003cbc60")) () ")")))) (; ";")) (expression_statement "*(long *)(lVar3 + lVar6 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar6 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar6 * 8)" (* "*") (cast_expression "(long *)(lVar3 + lVar6 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar6 * 8)" (( "(") (binary_expression "lVar3 + lVar6 * 8" (identifier "lVar3") (+ "+") (binary_expression "lVar6 * 8" (identifier "lVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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)

{
  long var_11;
  char *pcVar2;
  type_1 *var_15;
  var_1<var_2> *var_6;
  long var_12;
  type_2 *var_13;
  type_2 uVar6;
  type_3 *p_Var7;
  var_3<var_2> *var_20;
  var_1<var_4> *var_21;
  var_3<var_4> *var_22;
  type_3 *local_40 [2];
  
  var_6 = (var_1<var_2> *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  p_Var7 = *param_2;
  *(type_4 *)(var_6 + 8) = 0;
  *(type_2 *)(var_6 + 0x10) = 0;
  *(type_1 ***)var_6 = &PTR__numpunct_003b8c90;
                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */
  var_1<var_2>::var_7(var_6,p_Var7);
  var_15 = var_8;
  if (var_8 == (type_1 *)0x0) {
    *(int *)(var_6 + 8) = *(int *)(var_6 + 8) + 1;
  }
  else {
    var_9();
    *(int *)(var_6 + 8) = *(int *)(var_6 + 8) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_1<var_2>::type_6);
  *(var_1<var_2> **)(var_11 + var_12 * 8) = var_6;
  var_13 = (type_2 *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  local_40[0] = *param_2;
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__collate_003b8c20;
  uVar6 = facet::var_14(local_40);
  var_13[2] = uVar6;
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&collate<var_2>::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  p_Var7 = (type_3 *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  pcVar2 = *param_2;
  *(type_4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (type_5 *)0x0;
  p_Var7->__locales[0] = (type_5 *)&PTR__moneypunct_003b8ea0;
                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */
  var_16<var_2,false>::var_17(p_Var7,pcVar2);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    var_9();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_16<var_2,false>::type_6);
  *(type_3 **)(var_11 + var_12 * 8) = p_Var7;
  p_Var7 = (type_3 *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  pcVar2 = *param_2;
  *(type_4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (type_5 *)0x0;
  p_Var7->__locales[0] = (type_5 *)&PTR__moneypunct_003b8e38;
                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */
  var_16<var_2,true>::var_17(p_Var7,pcVar2);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    var_9();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_16<var_2,true>::type_6);
  *(type_3 **)(var_11 + var_12 * 8) = p_Var7;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__money_get_003b90c0;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&money_get<var_2,std::istreambuf_iterator<var_2,std::var_19<var_2>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__money_put_003b90f0;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&money_put<var_2,std::ostreambuf_iterator<var_2,std::var_19<var_2>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__time_get_003b9170;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&time_get<var_2,std::istreambuf_iterator<var_2,std::var_19<var_2>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_20 = (var_3<var_2> *)var_5(0x20);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */
  var_3<var_2>::var_3(var_20,*param_2,param_4,0);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_20 + 8) = *(int *)(var_20 + 8) + 1;
  }
  else {
    var_9();
    *(int *)(var_20 + 8) = *(int *)(var_20 + 8) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_3<var_2>::type_6);
  *(var_3<var_2> **)(var_11 + var_12 * 8) = var_20;
  var_21 = (var_1<var_4> *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  p_Var7 = *param_2;
  *(type_4 *)(var_21 + 8) = 0;
  *(type_2 *)(var_21 + 0x10) = 0;
  *(type_1 ***)var_21 = &PTR__numpunct_003bbd80;
                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */
  var_1<var_4>::var_7(var_21,p_Var7);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_21 + 8) = *(int *)(var_21 + 8) + 1;
  }
  else {
    var_9();
    *(int *)(var_21 + 8) = *(int *)(var_21 + 8) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_1<var_4>::type_6);
  *(var_1<var_4> **)(var_11 + var_12 * 8) = var_21;
  var_13 = (type_2 *)var_5(0x18);
                    /* WARNING: Load size is inaccurate */
  local_40[0] = *param_2;
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__collate_003bbc90;
  uVar6 = facet::var_14(local_40);
  var_13[2] = uVar6;
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&collate<var_4>::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  p_Var7 = (type_3 *)var_5(0x18);
  pcVar2 = *(char **)param_3;
  *(type_4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (type_5 *)0x0;
  p_Var7->__locales[0] = (type_5 *)&PTR__moneypunct_003bbf90;
                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */
  var_16<var_4,false>::var_17(p_Var7,pcVar2);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    var_9();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_16<var_4,false>::type_6);
  *(type_3 **)(var_11 + var_12 * 8) = p_Var7;
  p_Var7 = (type_3 *)var_5(0x18);
  pcVar2 = *(char **)param_3;
  *(type_4 *)(p_Var7->__locales + 1) = 0;
  p_Var7->__locales[2] = (type_5 *)0x0;
  p_Var7->__locales[0] = (type_5 *)&PTR__moneypunct_003bbf28;
                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */
  var_16<var_4,true>::var_17(p_Var7,pcVar2);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
  }
  else {
    var_9();
    *(int *)(p_Var7->__locales + 1) = *(int *)(p_Var7->__locales + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_16<var_4,true>::type_6);
  *(type_3 **)(var_11 + var_12 * 8) = p_Var7;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__money_get_003bc1b0;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&money_get<var_4,std::istreambuf_iterator<var_4,std::var_19<var_4>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__money_put_003bc1e0;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&money_put<var_4,std::ostreambuf_iterator<var_4,std::var_19<var_4>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_13 = (type_2 *)var_5(0x10);
  *(type_4 *)(var_13 + 1) = 0;
  *var_13 = &PTR__time_get_003bc260;
  if (var_15 == (type_1 *)0x0) {
    *(type_4 *)(var_13 + 1) = 1;
  }
  else {
    var_9();
    *(int *)(var_13 + 1) = *(int *)(var_13 + 1) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&time_get<var_4,std::istreambuf_iterator<var_4,std::var_19<var_4>>>
                                   ::type_6);
  *(type_2 **)(var_11 + var_12 * 8) = var_13;
  var_22 = (var_3<var_4> *)var_5(0x20);
                    /* WARNING: Load size is inaccurate */
                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */
  var_3<var_4>::var_3(var_22,*param_2,param_4,0);
  if (var_15 == (type_1 *)0x0) {
    *(int *)(var_22 + 8) = *(int *)(var_22 + 8) + 1;
  }
  else {
    var_9();
    *(int *)(var_22 + 8) = *(int *)(var_22 + 8) + 1;
    var_10();
  }
  var_11 = *(long *)((long)param_1 + 8);
  var_12 = locale::id::var_18((type_6 *)&var_3<var_4>::type_6);
  *(var_3<var_4> **)(var_11 + var_12 * 8) = var_22;
  return;
}


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

void MASKED(long param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,
                 undefined8 param_5)

{
  undefined *puVar1;
  undefined8 *puVar2;
  long lVar3;
  undefined8 uVar4;
  long lVar5;
  long lVar6;
  undefined8 local_40 [2];
  
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8c90;
                    /* try { // try from 002f43d1 to 002f43d5 has its CatchHandler @ 002f4a5a */
  FUN_002bb4f0(puVar2,uVar4);
  puVar1 = PTR___pthread_key_create_003bdee8;
  if (PTR___pthread_key_create_003bdee8 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca510);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  local_40[0] = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b8c20;
  uVar4 = FUN_002b7c50(local_40);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca4d8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8ea0;
                    /* try { // try from 002f44ae to 002f44b2 has its CatchHandler @ 002f4a32 */
  FUN_002bc230(puVar2,uVar4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca530);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003b8e38;
                    /* try { // try from 002f4514 to 002f4518 has its CatchHandler @ 002f4a2a */
  FUN_002bbd10(puVar2,uVar4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca528);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b90c0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca520);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b90f0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca518);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003b9170;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003ca4e8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  lVar5 = FUN_00275550(0x20);
                    /* try { // try from 002f4651 to 002f4655 has its CatchHandler @ 002f4a42 */
  FUN_00288110(lVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
    UNLOCK();
  }
  lVar3 = *(long *)(param_1 + 8);
  lVar6 = FUN_00279460(&DAT_003ca4e0);
  *(long *)(lVar3 + lVar6 * 8) = lVar5;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbd80;
                    /* try { // try from 002f46b5 to 002f46b9 has its CatchHandler @ 002f4a3a */
  FUN_002bb7c0(puVar2,uVar4);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc90);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  local_40[0] = *param_2;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bbc90;
  uVar4 = FUN_002b7c50(local_40);
  puVar2[2] = uVar4;
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc58);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_3;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbf90;
                    /* try { // try from 002f4783 to 002f4787 has its CatchHandler @ 002f4a52 */
  FUN_002bcf00(puVar2,uVar4,param_5);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbcb0);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x18);
  uVar4 = *param_3;
  *(undefined4 *)(puVar2 + 1) = 0;
  puVar2[2] = 0;
  *puVar2 = &PTR_FUN_003bbf28;
                    /* try { // try from 002f47e9 to 002f47ed has its CatchHandler @ 002f4a4a */
  FUN_002bc950(puVar2,uVar4,param_5);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbca8);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc1b0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbca0);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc1e0;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc98);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  puVar2 = (undefined8 *)FUN_00275550(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = &PTR_FUN_003bc260;
  if (puVar1 == (undefined *)0x0) {
    *(undefined4 *)(puVar2 + 1) = 1;
  }
  else {
    LOCK();
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
    UNLOCK();
  }
  lVar5 = *(long *)(param_1 + 8);
  lVar3 = FUN_00279460(&DAT_003cbc68);
  *(undefined8 **)(lVar5 + lVar3 * 8) = puVar2;
  lVar5 = FUN_00275550(0x20);
                    /* try { // try from 002f48fe to 002f4902 has its CatchHandler @ 002f4a62 */
  FUN_002c30d0(lVar5,*param_2,param_4,0);
  if (puVar1 == (undefined *)0x0) {
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
  }
  else {
    LOCK();
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
    UNLOCK();
  }
  lVar3 = *(long *)(param_1 + 8);
  lVar6 = FUN_00279460(&DAT_003cbc60);
  *(long *)(lVar3 + lVar6 * 8) = lVar5;
  return;
}

