
/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,
   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */

void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>
               (undefined4 param_1,int *param_2,int param_3)

{
  bool bVar1;
  undefined *puVar2;
  undefined4 uVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  string *psVar7;
  int iVar8;
  uint uVar9;
  int unaff_s5;
  int local_28;
  undefined1 auStack_24 [4];
  
  uVar3 = (**(code **)(*param_2 + 8))(param_2);
  *(undefined4 *)(param_3 + 0x14) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);
  *(undefined4 *)(param_3 + 0x18) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);
  *(undefined4 *)(param_3 + 0x34) = uVar3;
  *(undefined4 *)(param_3 + 8) = 0;
  *(undefined4 *)(param_3 + 0x1c) = 0;
  *(undefined4 *)(param_3 + 0x24) = 0;
  *(undefined4 *)(param_3 + 0x2c) = 0;
  *(undefined1 *)(param_3 + 0x6c) = 1;
  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);
  uVar9 = *(uint *)(local_28 + -0xc);
                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */
  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);
  std::string::copy((string *)&local_28,pcVar4,uVar9,0);
  *(char **)(param_3 + 8) = pcVar4;
  pcVar4[uVar9] = '\0';
  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;
  *(uint *)(param_3 + 0xc) = uVar9;
  if (bVar1) {
LAB_0030a8bc:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a8bc;
    std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));
    iVar5 = *param_2;
  }
  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  psVar7 = (string *)(iVar5 + 1);
  if ((string *)0x1fffffff < psVar7) {
                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0
                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */
                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c
                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */
    if (local_28 + -0xc != unaff_s5) {
      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);
    }
    goto LAB_0030ac08;
  }
                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */
  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);
  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
  *(int *)(param_3 + 0x1c) = iVar6;
  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;
  puVar2 = PTR__S_empty_rep_storage_004322cc;
  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;
  *(int *)(param_3 + 0x20) = iVar5;
  if (bVar1) {
LAB_0030a940:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a940;
    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
    iVar5 = *param_2;
  }
  psVar7 = (string *)&local_28;
  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  if (iVar5 + 1U < 0x20000000) {
    iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */
    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
    *(int *)(param_3 + 0x24) = iVar6;
    *(int *)(param_3 + 0x28) = iVar5;
    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
    if ((undefined *)(local_28 + -0xc) == puVar2) {
LAB_0030a9c0:
      iVar5 = *param_2;
    }
    else {
      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
      }
      else {
        SYNC(0);
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
        SYNC(0);
      }
      if (0 < iVar5) goto LAB_0030a9c0;
      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
      iVar5 = *param_2;
    }
    psVar7 = (string *)&local_28;
    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);
    iVar5 = *(int *)(local_28 + -0xc);
    if (iVar5 + 1U < 0x20000000) {
      iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */
      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
      *(int *)(param_3 + 0x2c) = iVar6;
      *(int *)(param_3 + 0x30) = iVar5;
      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
      if ((undefined *)(local_28 + -0xc) != puVar2) {
        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
        }
        else {
          SYNC(0);
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
          SYNC(0);
        }
        if (iVar5 < 1) {
          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
          iVar5 = *param_2;
          goto LAB_0030aa44;
        }
      }
      iVar5 = *param_2;
LAB_0030aa44:
      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x38) = local_28;
      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x3c) = local_28;
      return;
    }
                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
  }
                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */
  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */
  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {
    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);
  }
LAB_0030ac08:
  (*(code *)PTR__Unwind_Resume_00432258)(psVar7);
  return;
}



/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,
   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */

void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>
               (undefined4 param_1,int *param_2,int param_3)

{
  bool bVar1;
  undefined *puVar2;
  undefined4 uVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  string *psVar7;
  int iVar8;
  uint uVar9;
  int unaff_s5;
  int local_28;
  undefined1 auStack_24 [4];
  
  uVar3 = (**(code **)(*param_2 + 8))(param_2);
  *(undefined4 *)(param_3 + 0x14) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);
  *(undefined4 *)(param_3 + 0x18) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);
  *(undefined4 *)(param_3 + 0x34) = uVar3;
  *(undefined4 *)(param_3 + 8) = 0;
  *(undefined4 *)(param_3 + 0x1c) = 0;
  *(undefined4 *)(param_3 + 0x24) = 0;
  *(undefined4 *)(param_3 + 0x2c) = 0;
  *(undefined1 *)(param_3 + 0x6c) = 1;
  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);
  uVar9 = *(uint *)(local_28 + -0xc);
                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */
  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);
  string::copy((string *)&local_28,pcVar4,uVar9,0);
  *(char **)(param_3 + 8) = pcVar4;
  pcVar4[uVar9] = '\0';
  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;
  *(uint *)(param_3 + 0xc) = uVar9;
  if (bVar1) {
LAB_0030a8bc:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a8bc;
    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));
    iVar5 = *param_2;
  }
  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  psVar7 = (string *)(iVar5 + 1);
  if ((string *)0x1fffffff < psVar7) {
                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0
                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */
                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c
                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */
    if (local_28 + -0xc != unaff_s5) {
      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);
    }
    goto LAB_0030ac08;
  }
                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */
  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);
  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
  *(int *)(param_3 + 0x1c) = iVar6;
  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;
  puVar2 = PTR__S_empty_rep_storage_004322cc;
  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;
  *(int *)(param_3 + 0x20) = iVar5;
  if (bVar1) {
LAB_0030a940:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a940;
    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
    iVar5 = *param_2;
  }
  psVar7 = (string *)&local_28;
  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  if (iVar5 + 1U < 0x20000000) {
    iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */
    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
    *(int *)(param_3 + 0x24) = iVar6;
    *(int *)(param_3 + 0x28) = iVar5;
    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
    if ((undefined *)(local_28 + -0xc) == puVar2) {
LAB_0030a9c0:
      iVar5 = *param_2;
    }
    else {
      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
      }
      else {
        SYNC(0);
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
        SYNC(0);
      }
      if (0 < iVar5) goto LAB_0030a9c0;
      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
      iVar5 = *param_2;
    }
    psVar7 = (string *)&local_28;
    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);
    iVar5 = *(int *)(local_28 + -0xc);
    if (iVar5 + 1U < 0x20000000) {
      iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */
      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
      *(int *)(param_3 + 0x2c) = iVar6;
      *(int *)(param_3 + 0x30) = iVar5;
      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
      if ((undefined *)(local_28 + -0xc) != puVar2) {
        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
        }
        else {
          SYNC(0);
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
          SYNC(0);
        }
        if (iVar5 < 1) {
          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
          iVar5 = *param_2;
          goto LAB_0030aa44;
        }
      }
      iVar5 = *param_2;
LAB_0030aa44:
      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x38) = local_28;
      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x3c) = local_28;
      return;
    }
                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
  }
                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */
  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */
  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {
    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);
  }
LAB_0030ac08:
  (*(code *)PTR_FUN_00432258)(psVar7);
  return;
}


lui gp,0x13
addiu gp,gp,-0x5e4
addu gp,gp,t9
lw v0,0x0(a1)
addiu sp,sp,-0x40
sw gp,0x10(sp)
sw ra,0x3c(sp)
sw s4,0x30(sp)
sw s2,0x28(sp)
addiu s2,sp,0x18
sw s1,0x24(sp)
or s1,a1,zero
sw s0,0x20(sp)
or s0,a2,zero
sw a0,0x40(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s3,0x2c(sp)
lw t9,0x8(v0)
jalr t9
_or a0,a1,zero
sw v0,0x14(s0)
lw v0,0x0(s1)
lw t9,0xc(v0)
jalr t9
_or a0,s1,zero
sw v0,0x18(s0)
lw v0,0x0(s1)
lw t9,0x20(v0)
jalr t9
_or a0,s1,zero
or a0,s2,zero
sw v0,0x34(s0)
li v0,0x1
sw zero,0x8(s0)
sw zero,0x1c(s0)
sw zero,0x24(s0)
sw zero,0x2c(s0)
sb v0,0x6c(s0)
lw v0,0x0(s1)
lw t9,0x10(v0)
jalr t9
_or a1,s1,zero
lw v0,0x18(sp)
lw gp,0x10(sp)
lw s4,-0xc(v0)
lw t9,-0x7ef4(gp)
jalr t9
_addiu a0,s4,0x1
lw gp,0x10(sp)
or a3,zero,zero
or a2,s4,zero
or a1,v0,zero
or a0,s2,zero
lw t9,-0x7ef0(gp)
bal 0x002fa9e4
_or s3,v0,zero
lw gp,0x10(sp)
addu a1,s3,s4
lw v0,0x18(sp)
sw s3,0x8(s0)
sb zero,0x0(a1)
addiu a0,v0,-0xc
lw v1,-0x7f00(gp)
bne a0,v1,0x0030aaa0
_sw s4,0xc(s0)
lw v0,0x0(s1)
or a0,s2,zero
lw t9,0x14(v0)
jalr t9
_or a1,s1,zero
lw v0,0x18(sp)
lw s4,-0xc(v0)
lui v0,0x2000
addiu a0,s4,0x1
sltu v0,a0,v0
beq v0,zero,0x0030ac80
_lw gp,0x10(sp)
sll s3,a0,0x2
lw t9,-0x7ef4(gp)
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
or a3,zero,zero
or a2,s4,zero
or a1,v0,zero
or a0,s2,zero
lw t9,-0x7eec(gp)
jalr t9
_or s6,v0,zero
lw gp,0x10(sp)
addu s3,s6,s3
lw v0,0x18(sp)
sw s6,0x1c(s0)
sw zero,-0x4(s3)
addiu a0,v0,-0xc
lw s5,-0x7f04(gp)
bne a0,s5,0x0030aae0
_sw s4,0x20(s0)
lw v0,0x0(s1)
or a1,s1,zero
lw t9,0x18(v0)
jalr t9
_or a0,s2,zero
lw v0,0x18(sp)
lw s4,-0xc(v0)
lui v0,0x2000
addiu s3,s4,0x1
sltu v0,s3,v0
beq v0,zero,0x0030ac20
_lw gp,0x10(sp)
sll s3,s3,0x2
lw t9,-0x7ef4(gp)
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
or a3,zero,zero
or a2,s4,zero
or a1,v0,zero
or a0,s2,zero
lw t9,-0x7eec(gp)
jalr t9
_or s6,v0,zero
lw v0,0x18(sp)
addu s3,s6,s3
lw gp,0x10(sp)
sw s6,0x24(s0)
addiu a0,v0,-0xc
sw s4,0x28(s0)
bne a0,s5,0x0030ab60
_sw zero,-0x4(s3)
lw v0,0x0(s1)
or a1,s1,zero
lw t9,0x1c(v0)
jalr t9
_or a0,s2,zero
lui v1,0x2000
lw v0,0x18(sp)
lw s3,-0xc(v0)
addiu v0,s3,0x1
sltu v1,v0,v1
beq v1,zero,0x0030ac14
_lw gp,0x10(sp)
sll s4,v0,0x2
lw t9,-0x7ef4(gp)
jalr t9
_or a0,s4,zero
lw gp,0x10(sp)
or a3,zero,zero
or a2,s3,zero
or a1,v0,zero
or a0,s2,zero
lw t9,-0x7eec(gp)
jalr t9
_or s6,v0,zero
lw v1,0x18(sp)
addu v0,s6,s4
lw gp,0x10(sp)
sw s6,0x2c(s0)
addiu a0,v1,-0xc
sw s3,0x30(s0)
bne a0,s5,0x0030ab20
_sw zero,-0x4(v0)
lw v0,0x0(s1)
or a1,s1,zero
lw t9,0x24(v0)
jalr t9
_or a0,s2,zero
or a1,s1,zero
lw v0,0x18(sp)
sw v0,0x38(s0)
lw v0,0x0(s1)
lw t9,0x28(v0)
jalr t9
_or a0,s2,zero
lw v0,0x18(sp)
sw v0,0x3c(s0)
lw ra,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x40
lw v1,-0x3b54(gp)
beq v1,zero,0x0030abd0
_nop
sync 0x0
ll v1,-0x4(v0)
addiu at,v1,-0x1
sc at,-0x4(v0)
beq at,zero,0x0030aab0
_nop
sync 0x0
bgtz v1,0x0030a8bc
_lw t9,-0x7f84(gp)
bal 0x002fbc7c
_addiu a1,sp,0x1c
b 0x0030a8c0
_lw v0,0x0(s1)
lw v1,-0x3b54(gp)
beq v1,zero,0x0030aba0
_nop
sync 0x0
ll v1,-0x4(v0)
addiu at,v1,-0x1
sc at,-0x4(v0)
beq at,zero,0x0030aaf0
_nop
sync 0x0
bgtz v1,0x0030a940
_lw t9,-0x7f88(gp)
jalr t9
_addiu a1,sp,0x1c
b 0x0030a944
_lw v0,0x0(s1)
lw v0,-0x3b54(gp)
beq v0,zero,0x0030abc0
_nop
sync 0x0
ll v0,-0x4(v1)
addiu at,v0,-0x1
sc at,-0x4(v1)
beq at,zero,0x0030ab30
_nop
sync 0x0
bgtz v0,0x0030aa40
_lw t9,-0x7f88(gp)
jalr t9
_addiu a1,sp,0x1c
b 0x0030aa44
_lw v0,0x0(s1)
lw v1,-0x3b54(gp)
beq v1,zero,0x0030abb0
_nop
sync 0x0
ll v1,-0x4(v0)
addiu at,v1,-0x1
sc at,-0x4(v0)
beq at,zero,0x0030ab70
_nop
sync 0x0
bgtz v1,0x0030a9c0
_lw t9,-0x7f88(gp)
jalr t9
_addiu a1,sp,0x1c
b 0x0030a9c4
_lw v0,0x0(s1)
lw v1,-0x4(v0)
addiu a1,v1,-0x1
b 0x0030ab08
_sw a1,-0x4(v0)
lw v1,-0x4(v0)
addiu a1,v1,-0x1
b 0x0030ab88
_sw a1,-0x4(v0)
lw v0,-0x4(v1)
addiu a1,v0,-0x1
b 0x0030ab48
_sw a1,-0x4(v1)
lw v1,-0x4(v0)
addiu a1,v1,-0x1
b 0x0030aac8
_sw a1,-0x4(v0)
or s0,a0,zero
lw a0,0x18(sp)
addiu a0,a0,-0xc
beq a0,s5,0x0030ac08
_lw gp,0x10(sp)
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3ae0
jalr t9
_addiu a1,sp,0x1c
lw gp,0x10(sp)
lw t9,-0x7f78(gp)
jalr t9
_or a0,s0,zero
lw t9,-0x7ee8(gp)
jalr t9
_nop
lw t9,-0x7ee8(gp)
jalr t9
_nop
lw gp,0x10(sp)
or s0,a0,zero
lw a0,0x18(sp)
lw v0,-0x7f00(gp)
addiu a0,a0,-0xc
beq a0,v0,0x0030ac08
_lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3a80
jalr t9
_addiu a1,sp,0x1c
b 0x0030ac08
_lw gp,0x10(sp)
lw t9,-0x7ee8(gp)
jalr t9
_nop
b 0x0030abe0
_nop
(translation_unit "/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,\n   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */\n\nvoid std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  string *psVar7;\n  int iVar8;\n  uint uVar9;\n  int unaff_s5;\n  int local_28;\n  undefined1 auStack_24 [4];\n  \n  uVar3 = (**(code **)(*param_2 + 8))(param_2);\n  *(undefined4 *)(param_3 + 0x14) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);\n  *(undefined4 *)(param_3 + 0x18) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);\n  *(undefined4 *)(param_3 + 0x34) = uVar3;\n  *(undefined4 *)(param_3 + 8) = 0;\n  *(undefined4 *)(param_3 + 0x1c) = 0;\n  *(undefined4 *)(param_3 + 0x24) = 0;\n  *(undefined4 *)(param_3 + 0x2c) = 0;\n  *(undefined1 *)(param_3 + 0x6c) = 1;\n  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);\n  uVar9 = *(uint *)(local_28 + -0xc);\n                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */\n  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);\n  string::copy((string *)&local_28,pcVar4,uVar9,0);\n  *(char **)(param_3 + 8) = pcVar4;\n  pcVar4[uVar9] = '\0';\n  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;\n  *(uint *)(param_3 + 0xc) = uVar9;\n  if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }\n  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  psVar7 = (string *)(iVar5 + 1);\n  if ((string *)0x1fffffff < psVar7) {\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }\n                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */\n  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);\n  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n  *(int *)(param_3 + 0x1c) = iVar6;\n  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;\n  puVar2 = PTR__S_empty_rep_storage_004322cc;\n  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;\n  *(int *)(param_3 + 0x20) = iVar5;\n  if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }\n  psVar7 = (string *)&local_28;\n  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }\n                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */\n  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */\n  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }\nLAB_0030ac08:\n  (*(code *)PTR_FUN_00432258)(psVar7);\n  return;\n}\n\n" comment (declaration "void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;" primitive_type (ERROR "std::__facet_shims::__moneypunct_fill_cache<" identifier : : identifier : : identifier <) identifier , (ERROR "true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool" (function_declarator "true>\n               (undefined4 param_1,int *param_2,int param_3)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) { primitive_type) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "string *psVar7;" type_identifier (pointer_declarator "*psVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 8))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 8))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 8))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 8))" ( (pointer_expression "**(code **)(*param_2 + 8)" * (pointer_expression "*(code **)(*param_2 + 8)" * (cast_expression "(code **)(*param_2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 8)" ( (binary_expression "*param_2 + 8" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x14)" * (cast_expression "(undefined4 *)(param_3 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0xc))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x18)" * (cast_expression "(undefined4 *)(param_3 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x20))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" ( (pointer_expression "**(code **)(*param_2 + 0x20)" * (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x34) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_3 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 8) = 0" (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 0x6c) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0x6c) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0x6c)" * (cast_expression "(undefined1 *)(param_3 + 0x6c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x10))" ( (pointer_expression "**(code **)(*param_2 + 0x10)" * (pointer_expression "*(code **)(*param_2 + 0x10)" * (cast_expression "(code **)(*param_2 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x10)" ( (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "uVar9 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar9 = *(uint *)(local_28 + -0xc)" identifier = (pointer_expression "*(uint *)(local_28 + -0xc)" * (cast_expression "(uint *)(local_28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) comment (expression_statement "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" identifier = (cast_expression "(char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) ))))) ;) (labeled_statement "string::copy((string *)&local_28,pcVar4,uVar9,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_28,pcVar4,uVar9,0);" (call_expression "copy((string *)&local_28,pcVar4,uVar9,0)" identifier (argument_list "((string *)&local_28,pcVar4,uVar9,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;)) (expression_statement "*(char **)(param_3 + 8) = pcVar4;" (assignment_expression "*(char **)(param_3 + 8) = pcVar4" (pointer_expression "*(char **)(param_3 + 8)" * (cast_expression "(char **)(param_3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar4[uVar9] = '\0';" (assignment_expression "pcVar4[uVar9] = '\0'" (subscript_expression "pcVar4[uVar9]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;" (assignment_expression "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" identifier = (binary_expression "(allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == (cast_expression "(allocator *)PTR__S_empty_rep_storage_004322d0" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(uint *)(param_3 + 0xc) = uVar9;" (assignment_expression "*(uint *)(param_3 + 0xc) = uVar9" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a8bc:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a8bc;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a8bc;" goto statement_identifier ;)) (labeled_statement "string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "_M_destroy((allocator *)(local_28 + -0xc));" (call_expression "_M_destroy((allocator *)(local_28 + -0xc))" identifier (argument_list "((allocator *)(local_28 + -0xc))" ( (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) ))) ;))) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x14))" ( (pointer_expression "**(code **)(iVar5 + 0x14)" * (pointer_expression "*(code **)(iVar5 + 0x14)" * (cast_expression "(code **)(iVar5 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "psVar7 = (string *)(iVar5 + 1);" (assignment_expression "psVar7 = (string *)(iVar5 + 1)" identifier = (cast_expression "(string *)(iVar5 + 1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 1)" ( (binary_expression "iVar5 + 1" identifier + number_literal) )))) ;) (if_statement "if ((string *)0x1fffffff < psVar7) {\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" if (parenthesized_expression "((string *)0x1fffffff < psVar7)" ( (binary_expression "(string *)0x1fffffff < psVar7" (cast_expression "(string *)0x1fffffff" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" { comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) comment comment (if_statement "if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" if (parenthesized_expression "(local_28 + -0xc != unaff_s5)" ( (binary_expression "local_28 + -0xc != unaff_s5" (binary_expression "local_28 + -0xc" identifier + number_literal) != identifier) )) (compound_statement "{\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3ae0)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3ae0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3ae0)" ( (binary_expression "PTR_LAB_00432208 + -0x3ae0" identifier + number_literal) )))) )) (argument_list "(local_28 + -0xc,auStack_24)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) , identifier ))) ;) })) (goto_statement "goto LAB_0030ac08;" goto statement_identifier ;) })) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)psVar7 * 4)" ( (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x1c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x1c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" * (cast_expression "(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (int)psVar7 * 4 + -4)" ( (binary_expression "iVar6 + (int)psVar7 * 4 + -4" (binary_expression "iVar6 + (int)psVar7 * 4" identifier + (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2 = PTR__S_empty_rep_storage_004322cc;" (assignment_expression "puVar2 = PTR__S_empty_rep_storage_004322cc" identifier = identifier) ;) (expression_statement "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;" (assignment_expression "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" identifier = (binary_expression "(undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier)) ;) (expression_statement "*(int *)(param_3 + 0x20) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x20) = iVar5" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a940:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a940:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a940;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a940;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" ( (pointer_expression "**(code **)(iVar5 + 0x18)" * (pointer_expression "*(code **)(iVar5 + 0x18)" * (cast_expression "(code **)(iVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x24) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x24) = iVar6" (pointer_expression "*(int *)(param_3 + 0x24)" * (cast_expression "(int *)(param_3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x28) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x28) = iVar5" (pointer_expression "*(int *)(param_3 + 0x28)" * (cast_expression "(int *)(param_3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) == puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) == puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier) )) (compound_statement "{\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }" { (labeled_statement "LAB_0030a9c0:\n      iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" else (compound_statement "{\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" else (compound_statement "{\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a9c0;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a9c0;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x1c))" ( (pointer_expression "**(code **)(iVar5 + 0x1c)" * (pointer_expression "*(code **)(iVar5 + 0x1c)" * (cast_expression "(code **)(iVar5 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x2c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x2c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x2c)" * (cast_expression "(int *)(param_3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x30) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x30) = iVar5" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) != puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" if (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) (compound_statement "{\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" { (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto LAB_0030aa44;" goto statement_identifier ;) })) })) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (labeled_statement "LAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" statement_identifier : (expression_statement "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x24))" ( (pointer_expression "**(code **)(iVar5 + 0x24)" * (pointer_expression "*(code **)(iVar5 + 0x24)" * (cast_expression "(code **)(iVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;)) (expression_statement "*(int *)(param_3 + 0x38) = local_28;" (assignment_expression "*(int *)(param_3 + 0x38) = local_28" (pointer_expression "*(int *)(param_3 + 0x38)" * (cast_expression "(int *)(param_3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" ( (pointer_expression "**(code **)(*param_2 + 0x28)" * (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x3c) = local_28;" (assignment_expression "*(int *)(param_3 + 0x3c) = local_28" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) comment (if_statement "if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0)" ( (binary_expression "(undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3a80)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3a80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3a80)" ( (binary_expression "PTR_LAB_00432208 + -0x3a80" identifier + number_literal) )))) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) })) (labeled_statement "LAB_0030ac08:\n  (*(code *)PTR_FUN_00432258)(psVar7);" statement_identifier : (expression_statement "(*(code *)PTR_FUN_00432258)(psVar7);" (call_expression "(*(code *)PTR_FUN_00432258)(psVar7)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" ( (pointer_expression "*(code *)PTR_FUN_00432258" * (cast_expression "(code *)PTR_FUN_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(psVar7)" ( identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,\n   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */\n\nvoid std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  string *psVar7;\n  int iVar8;\n  uint uVar9;\n  int unaff_s5;\n  int local_28;\n  undefined1 auStack_24 [4];\n  \n  uVar3 = (**(code **)(*param_2 + 8))(param_2);\n  *(undefined4 *)(param_3 + 0x14) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);\n  *(undefined4 *)(param_3 + 0x18) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);\n  *(undefined4 *)(param_3 + 0x34) = uVar3;\n  *(undefined4 *)(param_3 + 8) = 0;\n  *(undefined4 *)(param_3 + 0x1c) = 0;\n  *(undefined4 *)(param_3 + 0x24) = 0;\n  *(undefined4 *)(param_3 + 0x2c) = 0;\n  *(undefined1 *)(param_3 + 0x6c) = 1;\n  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);\n  uVar9 = *(uint *)(local_28 + -0xc);\n                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */\n  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);\n  std::string::copy((string *)&local_28,pcVar4,uVar9,0);\n  *(char **)(param_3 + 8) = pcVar4;\n  pcVar4[uVar9] = '\0';\n  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;\n  *(uint *)(param_3 + 0xc) = uVar9;\n  if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }\n  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  psVar7 = (string *)(iVar5 + 1);\n  if ((string *)0x1fffffff < psVar7) {\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }\n                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */\n  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);\n  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n  *(int *)(param_3 + 0x1c) = iVar6;\n  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;\n  puVar2 = PTR__S_empty_rep_storage_004322cc;\n  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;\n  *(int *)(param_3 + 0x20) = iVar5;\n  if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }\n  psVar7 = (string *)&local_28;\n  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }\n                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */\n  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */\n  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }\nLAB_0030ac08:\n  (*(code *)PTR__Unwind_Resume_00432258)(psVar7);\n  return;\n}\n\n" comment (declaration "void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;" primitive_type (ERROR "std::__facet_shims::__moneypunct_fill_cache<" identifier : : identifier : : identifier <) identifier , (ERROR "true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool" (function_declarator "true>\n               (undefined4 param_1,int *param_2,int param_3)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) { primitive_type) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "string *psVar7;" type_identifier (pointer_declarator "*psVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 8))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 8))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 8))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 8))" ( (pointer_expression "**(code **)(*param_2 + 8)" * (pointer_expression "*(code **)(*param_2 + 8)" * (cast_expression "(code **)(*param_2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 8)" ( (binary_expression "*param_2 + 8" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x14)" * (cast_expression "(undefined4 *)(param_3 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0xc))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x18)" * (cast_expression "(undefined4 *)(param_3 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x20))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" ( (pointer_expression "**(code **)(*param_2 + 0x20)" * (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x34) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_3 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 8) = 0" (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 0x6c) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0x6c) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0x6c)" * (cast_expression "(undefined1 *)(param_3 + 0x6c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x10))" ( (pointer_expression "**(code **)(*param_2 + 0x10)" * (pointer_expression "*(code **)(*param_2 + 0x10)" * (cast_expression "(code **)(*param_2 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x10)" ( (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "uVar9 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar9 = *(uint *)(local_28 + -0xc)" identifier = (pointer_expression "*(uint *)(local_28 + -0xc)" * (cast_expression "(uint *)(local_28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) comment (expression_statement "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" identifier = (cast_expression "(char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) ))))) ;) (labeled_statement "std::string::copy((string *)&local_28,pcVar4,uVar9,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_28,pcVar4,uVar9,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_28,pcVar4,uVar9,0);" (call_expression "copy((string *)&local_28,pcVar4,uVar9,0)" identifier (argument_list "((string *)&local_28,pcVar4,uVar9,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;))) (expression_statement "*(char **)(param_3 + 8) = pcVar4;" (assignment_expression "*(char **)(param_3 + 8) = pcVar4" (pointer_expression "*(char **)(param_3 + 8)" * (cast_expression "(char **)(param_3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar4[uVar9] = '\0';" (assignment_expression "pcVar4[uVar9] = '\0'" (subscript_expression "pcVar4[uVar9]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;" (assignment_expression "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" identifier = (binary_expression "(allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == (cast_expression "(allocator *)PTR__S_empty_rep_storage_004322d0" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(uint *)(param_3 + 0xc) = uVar9;" (assignment_expression "*(uint *)(param_3 + 0xc) = uVar9" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a8bc:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a8bc;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a8bc;" goto statement_identifier ;)) (labeled_statement "std::string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "_M_destroy((allocator *)(local_28 + -0xc));" (call_expression "_M_destroy((allocator *)(local_28 + -0xc))" identifier (argument_list "((allocator *)(local_28 + -0xc))" ( (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) ))) ;)))) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x14))" ( (pointer_expression "**(code **)(iVar5 + 0x14)" * (pointer_expression "*(code **)(iVar5 + 0x14)" * (cast_expression "(code **)(iVar5 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "psVar7 = (string *)(iVar5 + 1);" (assignment_expression "psVar7 = (string *)(iVar5 + 1)" identifier = (cast_expression "(string *)(iVar5 + 1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 1)" ( (binary_expression "iVar5 + 1" identifier + number_literal) )))) ;) (if_statement "if ((string *)0x1fffffff < psVar7) {\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" if (parenthesized_expression "((string *)0x1fffffff < psVar7)" ( (binary_expression "(string *)0x1fffffff < psVar7" (cast_expression "(string *)0x1fffffff" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0\n                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */\n                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c\n                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */\n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" { comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) comment comment (if_statement "if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" if (parenthesized_expression "(local_28 + -0xc != unaff_s5)" ( (binary_expression "local_28 + -0xc != unaff_s5" (binary_expression "local_28 + -0xc" identifier + number_literal) != identifier) )) (compound_statement "{\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3ae0)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3ae0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3ae0)" ( (binary_expression "PTR_LAB_00432208 + -0x3ae0" identifier + number_literal) )))) )) (argument_list "(local_28 + -0xc,auStack_24)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) , identifier ))) ;) })) (goto_statement "goto LAB_0030ac08;" goto statement_identifier ;) })) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)psVar7 * 4)" ( (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x1c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x1c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" * (cast_expression "(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (int)psVar7 * 4 + -4)" ( (binary_expression "iVar6 + (int)psVar7 * 4 + -4" (binary_expression "iVar6 + (int)psVar7 * 4" identifier + (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2 = PTR__S_empty_rep_storage_004322cc;" (assignment_expression "puVar2 = PTR__S_empty_rep_storage_004322cc" identifier = identifier) ;) (expression_statement "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;" (assignment_expression "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" identifier = (binary_expression "(undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier)) ;) (expression_statement "*(int *)(param_3 + 0x20) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x20) = iVar5" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a940:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a940:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a940;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a940;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" ( (pointer_expression "**(code **)(iVar5 + 0x18)" * (pointer_expression "*(code **)(iVar5 + 0x18)" * (cast_expression "(code **)(iVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n    iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */\n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */\n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x24) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x24) = iVar6" (pointer_expression "*(int *)(param_3 + 0x24)" * (cast_expression "(int *)(param_3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x28) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x28) = iVar5" (pointer_expression "*(int *)(param_3 + 0x28)" * (cast_expression "(int *)(param_3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) == puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) == puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier) )) (compound_statement "{\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }" { (labeled_statement "LAB_0030a9c0:\n      iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" else (compound_statement "{\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" else (compound_statement "{\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a9c0;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a9c0;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x1c))" ( (pointer_expression "**(code **)(iVar5 + 0x1c)" * (pointer_expression "*(code **)(iVar5 + 0x1c)" * (cast_expression "(code **)(iVar5 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar8 = (iVar5 + 1U) * 4;\n                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */\n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) comment (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x2c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x2c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x2c)" * (cast_expression "(int *)(param_3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x30) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x30) = iVar5" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) != puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" if (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) (compound_statement "{\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" { (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto LAB_0030aa44;" goto statement_identifier ;) })) })) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (labeled_statement "LAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" statement_identifier : (expression_statement "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x24))" ( (pointer_expression "**(code **)(iVar5 + 0x24)" * (pointer_expression "*(code **)(iVar5 + 0x24)" * (cast_expression "(code **)(iVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;)) (expression_statement "*(int *)(param_3 + 0x38) = local_28;" (assignment_expression "*(int *)(param_3 + 0x38) = local_28" (pointer_expression "*(int *)(param_3 + 0x38)" * (cast_expression "(int *)(param_3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" ( (pointer_expression "**(code **)(*param_2 + 0x28)" * (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x3c) = local_28;" (assignment_expression "*(int *)(param_3 + 0x3c) = local_28" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) comment (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) comment (if_statement "if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0)" ( (binary_expression "(undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3a80)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3a80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3a80)" ( (binary_expression "PTR_LAB_00432208 + -0x3a80" identifier + number_literal) )))) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) })) (labeled_statement "LAB_0030ac08:\n  (*(code *)PTR__Unwind_Resume_00432258)(psVar7);" statement_identifier : (expression_statement "(*(code *)PTR__Unwind_Resume_00432258)(psVar7);" (call_expression "(*(code *)PTR__Unwind_Resume_00432258)(psVar7)" (parenthesized_expression "(*(code *)PTR__Unwind_Resume_00432258)" ( (pointer_expression "*(code *)PTR__Unwind_Resume_00432258" * (cast_expression "(code *)PTR__Unwind_Resume_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(psVar7)" ( identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  int iVar5;\n  int iVar6;\n  string *psVar7;\n  int iVar8;\n  uint uVar9;\n  int unaff_s5;\n  int local_28;\n  undefined1 auStack_24 [4];\n  \n  uVar3 = (**(code **)(*param_2 + 8))(param_2);\n  *(undefined4 *)(param_3 + 0x14) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);\n  *(undefined4 *)(param_3 + 0x18) = uVar3;\n  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);\n  *(undefined4 *)(param_3 + 0x34) = uVar3;\n  *(undefined4 *)(param_3 + 8) = 0;\n  *(undefined4 *)(param_3 + 0x1c) = 0;\n  *(undefined4 *)(param_3 + 0x24) = 0;\n  *(undefined4 *)(param_3 + 0x2c) = 0;\n  *(undefined1 *)(param_3 + 0x6c) = 1;\n  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);\n  uVar9 = *(uint *)(local_28 + -0xc);\n                    \n  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);\n  string::copy((string *)&local_28,pcVar4,uVar9,0);\n  *(char **)(param_3 + 8) = pcVar4;\n  pcVar4[uVar9] = '\0';\n  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;\n  *(uint *)(param_3 + 0xc) = uVar9;\n  if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }\n  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  psVar7 = (string *)(iVar5 + 1);\n  if ((string *)0x1fffffff < psVar7) {\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n                    \n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }\n                    \n  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);\n  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n  *(int *)(param_3 + 0x1c) = iVar6;\n  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;\n  puVar2 = PTR__S_empty_rep_storage_004322cc;\n  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;\n  *(int *)(param_3 + 0x20) = iVar5;\n  if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }\n  psVar7 = (string *)&local_28;\n  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);\n  iVar5 = *(int *)(local_28 + -0xc);\n  if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    \n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }\n                    \n  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }\nLAB_0030ac08:\n  (*(code *)PTR_FUN_00432258)(psVar7);\n  return;\n}\n\n" (declaration "void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;" primitive_type (ERROR "std::__facet_shims::__moneypunct_fill_cache<" identifier : : identifier : : identifier <) identifier , (ERROR "true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool" (function_declarator "true>\n               (undefined4 param_1,int *param_2,int param_3)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) { primitive_type) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "string *psVar7;" type_identifier (pointer_declarator "*psVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 8))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 8))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 8))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 8))" ( (pointer_expression "**(code **)(*param_2 + 8)" * (pointer_expression "*(code **)(*param_2 + 8)" * (cast_expression "(code **)(*param_2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 8)" ( (binary_expression "*param_2 + 8" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x14)" * (cast_expression "(undefined4 *)(param_3 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0xc))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x18)" * (cast_expression "(undefined4 *)(param_3 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x20))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" ( (pointer_expression "**(code **)(*param_2 + 0x20)" * (pointer_expression "*(code **)(*param_2 + 0x20)" * (cast_expression "(code **)(*param_2 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x20)" ( (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_3 + 0x34) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" * (cast_expression "(undefined4 *)(param_3 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_3 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 8) = 0" (pointer_expression "*(undefined4 *)(param_3 + 8)" * (cast_expression "(undefined4 *)(param_3 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" * (cast_expression "(undefined4 *)(param_3 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" * (cast_expression "(undefined4 *)(param_3 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" * (cast_expression "(undefined4 *)(param_3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 0x6c) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0x6c) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0x6c)" * (cast_expression "(undefined1 *)(param_3 + 0x6c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x10))" ( (pointer_expression "**(code **)(*param_2 + 0x10)" * (pointer_expression "*(code **)(*param_2 + 0x10)" * (cast_expression "(code **)(*param_2 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x10)" ( (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "uVar9 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar9 = *(uint *)(local_28 + -0xc)" identifier = (pointer_expression "*(uint *)(local_28 + -0xc)" * (cast_expression "(uint *)(local_28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" identifier = (cast_expression "(char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) ))))) ;) (labeled_statement "string::copy((string *)&local_28,pcVar4,uVar9,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_28,pcVar4,uVar9,0);" (call_expression "copy((string *)&local_28,pcVar4,uVar9,0)" identifier (argument_list "((string *)&local_28,pcVar4,uVar9,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;)) (expression_statement "*(char **)(param_3 + 8) = pcVar4;" (assignment_expression "*(char **)(param_3 + 8) = pcVar4" (pointer_expression "*(char **)(param_3 + 8)" * (cast_expression "(char **)(param_3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar4[uVar9] = '\0';" (assignment_expression "pcVar4[uVar9] = '\0'" (subscript_expression "pcVar4[uVar9]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;" (assignment_expression "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" identifier = (binary_expression "(allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == (cast_expression "(allocator *)PTR__S_empty_rep_storage_004322d0" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(uint *)(param_3 + 0xc) = uVar9;" (assignment_expression "*(uint *)(param_3 + 0xc) = uVar9" (pointer_expression "*(uint *)(param_3 + 0xc)" * (cast_expression "(uint *)(param_3 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a8bc:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a8bc;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a8bc;" goto statement_identifier ;)) (labeled_statement "string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_destroy((allocator *)(local_28 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "_M_destroy((allocator *)(local_28 + -0xc));" (call_expression "_M_destroy((allocator *)(local_28 + -0xc))" identifier (argument_list "((allocator *)(local_28 + -0xc))" ( (cast_expression "(allocator *)(local_28 + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) ))) ;))) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x14))" ( (pointer_expression "**(code **)(iVar5 + 0x14)" * (pointer_expression "*(code **)(iVar5 + 0x14)" * (cast_expression "(code **)(iVar5 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "psVar7 = (string *)(iVar5 + 1);" (assignment_expression "psVar7 = (string *)(iVar5 + 1)" identifier = (cast_expression "(string *)(iVar5 + 1)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 1)" ( (binary_expression "iVar5 + 1" identifier + number_literal) )))) ;) (if_statement "if ((string *)0x1fffffff < psVar7) {\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n                    \n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" if (parenthesized_expression "((string *)0x1fffffff < psVar7)" ( (binary_expression "(string *)0x1fffffff < psVar7" (cast_expression "(string *)0x1fffffff" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n                    \n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" { (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" if (parenthesized_expression "(local_28 + -0xc != unaff_s5)" ( (binary_expression "local_28 + -0xc != unaff_s5" (binary_expression "local_28 + -0xc" identifier + number_literal) != identifier) )) (compound_statement "{\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3ae0)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3ae0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3ae0)" ( (binary_expression "PTR_LAB_00432208 + -0x3ae0" identifier + number_literal) )))) )) (argument_list "(local_28 + -0xc,auStack_24)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) , identifier ))) ;) })) (goto_statement "goto LAB_0030ac08;" goto statement_identifier ;) })) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)psVar7 * 4)" ( (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x1c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x1c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" * (cast_expression "(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (int)psVar7 * 4 + -4)" ( (binary_expression "iVar6 + (int)psVar7 * 4 + -4" (binary_expression "iVar6 + (int)psVar7 * 4" identifier + (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2 = PTR__S_empty_rep_storage_004322cc;" (assignment_expression "puVar2 = PTR__S_empty_rep_storage_004322cc" identifier = identifier) ;) (expression_statement "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;" (assignment_expression "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" identifier = (binary_expression "(undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier)) ;) (expression_statement "*(int *)(param_3 + 0x20) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x20) = iVar5" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_0030a940:\n    iVar5 = *param_2;\n  }" { (labeled_statement "LAB_0030a940:\n    iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" else (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a940;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a940;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" ( (pointer_expression "**(code **)(iVar5 + 0x18)" * (pointer_expression "*(code **)(iVar5 + 0x18)" * (cast_expression "(code **)(iVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    \n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n    iVar8 = (iVar5 + 1U) * 4;\n                    \n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x24) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x24) = iVar6" (pointer_expression "*(int *)(param_3 + 0x24)" * (cast_expression "(int *)(param_3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x28) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x28) = iVar5" (pointer_expression "*(int *)(param_3 + 0x28)" * (cast_expression "(int *)(param_3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x28)" ( (binary_expression "param_3 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) == puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) == puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) == identifier) )) (compound_statement "{\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }" { (labeled_statement "LAB_0030a9c0:\n      iVar5 = *param_2;" statement_identifier : (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) }) (else_clause "else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" else (compound_statement "{\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" else (compound_statement "{\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (0 < iVar5) goto LAB_0030a9c0;" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_0030a9c0;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" identifier = (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ;) (expression_statement "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x1c))" ( (pointer_expression "**(code **)(iVar5 + 0x1c)" * (pointer_expression "*(code **)(iVar5 + 0x1c)" * (cast_expression "(code **)(iVar5 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" identifier = (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" if (parenthesized_expression "(iVar5 + 1U < 0x20000000)" ( (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" { (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" identifier = (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" ( (binary_expression "iVar5 + 1U" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" identifier = (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" ( (pointer_expression "*(code *)PTR_operator_new___004322dc" * (cast_expression "(code *)PTR_operator_new___004322dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" ( (pointer_expression "*(code *)PTR_copy_004322e4" * (cast_expression "(code *)PTR_copy_004322e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((string *)&local_28,iVar6,iVar5,0)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "*(int *)(param_3 + 0x2c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x2c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x2c)" * (cast_expression "(int *)(param_3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2c)" ( (binary_expression "param_3 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_3 + 0x30) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x30) = iVar5" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" * (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar8 + -4)" ( (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" identifier + identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != puVar2)" ( (binary_expression "(undefined *)(local_28 + -0xc) != puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" { (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" if (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }" { (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" identifier = (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" * (cast_expression "(int *)(local_28 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -4)" ( (binary_expression "local_28 + -4" identifier + number_literal) )))) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" if (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) (compound_statement "{\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" { (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" ( (pointer_expression "*(code *)PTR__M_destroy_00432248" * (cast_expression "(code *)PTR__M_destroy_00432248" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto LAB_0030aa44;" goto statement_identifier ;) })) })) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (labeled_statement "LAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" statement_identifier : (expression_statement "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x24))" ( (pointer_expression "**(code **)(iVar5 + 0x24)" * (pointer_expression "*(code **)(iVar5 + 0x24)" * (cast_expression "(code **)(iVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;)) (expression_statement "*(int *)(param_3 + 0x38) = local_28;" (assignment_expression "*(int *)(param_3 + 0x38) = local_28" (pointer_expression "*(int *)(param_3 + 0x38)" * (cast_expression "(int *)(param_3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x38)" ( (binary_expression "param_3 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" ( (pointer_expression "**(code **)(*param_2 + 0x28)" * (pointer_expression "*(code **)(*param_2 + 0x28)" * (cast_expression "(code **)(*param_2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x28)" ( (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_28,param_2)" ( (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x3c) = local_28;" (assignment_expression "*(int *)(param_3 + 0x3c) = local_28" (pointer_expression "*(int *)(param_3 + 0x3c)" * (cast_expression "(int *)(param_3 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3c)" ( (binary_expression "param_3 + 0x3c" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" ( (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" * (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" if (parenthesized_expression "((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0)" ( (binary_expression "(undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0" (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) != identifier) )) (compound_statement "{\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" { (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))" ( (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3a80)" * (cast_expression "(code *)(PTR_LAB_00432208 + -0x3a80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00432208 + -0x3a80)" ( (binary_expression "PTR_LAB_00432208 + -0x3a80" identifier + number_literal) )))) )) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" ( (cast_expression "(undefined *)(local_28 + -0xc)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))) , identifier ))) ;) })) (labeled_statement "LAB_0030ac08:\n  (*(code *)PTR_FUN_00432258)(psVar7);" statement_identifier : (expression_statement "(*(code *)PTR_FUN_00432258)(psVar7);" (call_expression "(*(code *)PTR_FUN_00432258)(psVar7)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" ( (pointer_expression "*(code *)PTR_FUN_00432258" * (cast_expression "(code *)PTR_FUN_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(psVar7)" ( identifier ))) ;)) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : : IDENT : : IDENT <) IDENT , (ERROR (function_declarator IDENT (ERROR >) (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { TYPE) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , IDENT , LIT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) ))) ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) == IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (return_statement return ;) (ERROR }))
(declaration "void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool bVar1;" (primitive_type "void") (ERROR "std::__facet_shims::__moneypunct_fill_cache<" (identifier "std") (: ":") (: ":") (identifier "__facet_shims") (: ":") (: ":") (identifier "__moneypunct_fill_cache") (< "<")) (identifier "wchar_t") (, ",") (ERROR "true>\n               (undefined4 param_1,int *param_2,int param_3)\n\n{\n  bool" (function_declarator "true>\n               (undefined4 param_1,int *param_2,int param_3)" (identifier "true") (ERROR ">" (> ">")) (parameter_list "(undefined4 param_1,int *param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) ({ "{") (primitive_type "bool")) (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "string *psVar7;" (type_identifier "string") (pointer_declarator "*psVar7" (* "*") (identifier "psVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int unaff_s5;" (primitive_type "int") (identifier "unaff_s5") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "undefined1 auStack_24 [4];" (type_identifier "undefined1") (array_declarator "auStack_24 [4]" (identifier "auStack_24") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "uVar3 = (**(code **)(*param_2 + 8))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 8))(param_2)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*param_2 + 8))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 8))" (( "(") (pointer_expression "**(code **)(*param_2 + 8)" (* "*") (pointer_expression "*(code **)(*param_2 + 8)" (* "*") (cast_expression "(code **)(*param_2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 8)" (( "(") (binary_expression "*param_2 + 8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc))(param_2)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*param_2 + 0xc))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xc)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xc)" (* "*") (cast_expression "(code **)(*param_2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xc)" (( "(") (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = (**(code **)(*param_2 + 0x20))(param_2);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x20))(param_2)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*param_2 + 0x20))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x20))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x20)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x20)" (* "*") (cast_expression "(code **)(*param_2 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x20)" (( "(") (binary_expression "*param_2 + 0x20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x34) = uVar3;" (assignment_expression "*(undefined4 *)(param_3 + 0x34) = uVar3" (pointer_expression "*(undefined4 *)(param_3 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 8) = 0" (pointer_expression "*(undefined4 *)(param_3 + 8)" (* "*") (cast_expression "(undefined4 *)(param_3 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_3 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_3 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_3 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2c)" (( "(") (binary_expression "param_3 + 0x2c" (identifier "param_3") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 0x6c) = 1;" (assignment_expression "*(undefined1 *)(param_3 + 0x6c) = 1" (pointer_expression "*(undefined1 *)(param_3 + 0x6c)" (* "*") (cast_expression "(undefined1 *)(param_3 + 0x6c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x6c)" (( "(") (binary_expression "param_3 + 0x6c" (identifier "param_3") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x10))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x10))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x10)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x10)" (* "*") (cast_expression "(code **)(*param_2 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x10)" (( "(") (binary_expression "*param_2 + 0x10" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "uVar9 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar9 = *(uint *)(local_28 + -0xc)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(local_28 + -0xc)" (* "*") (cast_expression "(uint *)(local_28 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);" (assignment_expression "pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (identifier "pcVar4") (= "=") (cast_expression "(char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_operator_new___004322dc)(uVar9 + 1)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" (( "(") (pointer_expression "*(code *)PTR_operator_new___004322dc" (* "*") (cast_expression "(code *)PTR_operator_new___004322dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new___004322dc"))) () ")")) (argument_list "(uVar9 + 1)" (( "(") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (labeled_statement "string::copy((string *)&local_28,pcVar4,uVar9,0);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "copy((string *)&local_28,pcVar4,uVar9,0);" (call_expression "copy((string *)&local_28,pcVar4,uVar9,0)" (identifier "copy") (argument_list "((string *)&local_28,pcVar4,uVar9,0)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "pcVar4") (, ",") (identifier "uVar9") (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "*(char **)(param_3 + 8) = pcVar4;" (assignment_expression "*(char **)(param_3 + 8) = pcVar4" (pointer_expression "*(char **)(param_3 + 8)" (* "*") (cast_expression "(char **)(param_3 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4[uVar9] = '\0';" (assignment_expression "pcVar4[uVar9] = '\0'" (subscript_expression "pcVar4[uVar9]" (identifier "pcVar4") ([ "[") (identifier "uVar9") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;" (assignment_expression "bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" (identifier "bVar1") (= "=") (binary_expression "(allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0" (cast_expression "(allocator *)(local_28 + -0xc)" (( "(") (type_descriptor "allocator *" (type_identifier "allocator") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (== "==") (cast_expression "(allocator *)PTR__S_empty_rep_storage_004322d0" (( "(") (type_descriptor "allocator *" (type_identifier "allocator") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__S_empty_rep_storage_004322d0")))) (; ";")) (expression_statement "*(uint *)(param_3 + 0xc) = uVar9;" (assignment_expression "*(uint *)(param_3 + 0xc) = uVar9" (pointer_expression "*(uint *)(param_3 + 0xc)" (* "*") (cast_expression "(uint *)(param_3 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (bVar1) {\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\nLAB_0030a8bc:\n    iVar5 = *param_2;\n  }" ({ "{") (labeled_statement "LAB_0030a8bc:\n    iVar5 = *param_2;" (statement_identifier "LAB_0030a8bc") (: ":") (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (} "}")) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" (else "else") (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a8bc;\n    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));\n    iVar5 = *param_2;\n  }" ({ "{") (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043667c") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" ({ "{") (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" (else "else") (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (0 < iVar5) goto LAB_0030a8bc;" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0030a8bc;" (goto "goto") (statement_identifier "LAB_0030a8bc") (; ";"))) (labeled_statement "string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (labeled_statement "_Rep::_M_destroy((allocator *)(local_28 + -0xc));" (statement_identifier "_Rep") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_destroy((allocator *)(local_28 + -0xc));" (call_expression "_M_destroy((allocator *)(local_28 + -0xc))" (identifier "_M_destroy") (argument_list "((allocator *)(local_28 + -0xc))" (( "(") (cast_expression "(allocator *)(local_28 + -0xc)" (( "(") (type_descriptor "allocator *" (type_identifier "allocator") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) () ")"))) (; ";")))) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x14))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x14))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x14)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x14)" (* "*") (cast_expression "(code **)(iVar5 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -0xc)" (* "*") (cast_expression "(int *)(local_28 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "psVar7 = (string *)(iVar5 + 1);" (assignment_expression "psVar7 = (string *)(iVar5 + 1)" (identifier "psVar7") (= "=") (cast_expression "(string *)(iVar5 + 1)" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 1)" (( "(") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((string *)0x1fffffff < psVar7) {\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n                    \n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" (if "if") (parenthesized_expression "((string *)0x1fffffff < psVar7)" (( "(") (binary_expression "(string *)0x1fffffff < psVar7" (cast_expression "(string *)0x1fffffff" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1fffffff")) (< "<") (identifier "psVar7")) () ")")) (compound_statement "{\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n                    \n                    \n    if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }\n    goto LAB_0030ac08;\n  }" ({ "{") (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" (( "(") (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (* "*") (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___cxa_throw_bad_array_new_length_004322e8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_28 + -0xc != unaff_s5) {\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" (if "if") (parenthesized_expression "(local_28 + -0xc != unaff_s5)" (( "(") (binary_expression "local_28 + -0xc != unaff_s5" (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) (!= "!=") (identifier "unaff_s5")) () ")")) (compound_statement "{\n      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);\n    }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3ae0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3ae0)" (* "*") (cast_expression "(code *)(PTR_LAB_00432208 + -0x3ae0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00432208 + -0x3ae0)" (( "(") (binary_expression "PTR_LAB_00432208 + -0x3ae0" (identifier "PTR_LAB_00432208") (+ "+") (number_literal "-0x3ae0")) () ")")))) () ")")) (argument_list "(local_28 + -0xc,auStack_24)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0030ac08;" (goto "goto") (statement_identifier "LAB_0030ac08") (; ";")) (} "}"))) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" (( "(") (pointer_expression "*(code *)PTR_operator_new___004322dc" (* "*") (cast_expression "(code *)PTR_operator_new___004322dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new___004322dc"))) () ")")) (argument_list "((int)psVar7 * 4)" (( "(") (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar7")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" (( "(") (pointer_expression "*(code *)PTR_copy_004322e4" (* "*") (cast_expression "(code *)PTR_copy_004322e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_copy_004322e4"))) () ")")) (argument_list "((string *)&local_28,iVar6,iVar5,0)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "iVar6") (, ",") (identifier "iVar5") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x1c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x1c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x1c)" (* "*") (cast_expression "(int *)(param_3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" (* "*") (cast_expression "(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + (int)psVar7 * 4 + -4)" (( "(") (binary_expression "iVar6 + (int)psVar7 * 4 + -4" (binary_expression "iVar6 + (int)psVar7 * 4" (identifier "iVar6") (+ "+") (binary_expression "(int)psVar7 * 4" (cast_expression "(int)psVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar7")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2 = PTR__S_empty_rep_storage_004322cc;" (assignment_expression "puVar2 = PTR__S_empty_rep_storage_004322cc" (identifier "puVar2") (= "=") (identifier "PTR__S_empty_rep_storage_004322cc")) (; ";")) (expression_statement "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;" (assignment_expression "bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" (identifier "bVar1") (= "=") (binary_expression "(undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc" (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (== "==") (identifier "PTR__S_empty_rep_storage_004322cc"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x20) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x20) = iVar5" (pointer_expression "*(int *)(param_3 + 0x20)" (* "*") (cast_expression "(int *)(param_3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (bVar1) {\nLAB_0030a940:\n    iVar5 = *param_2;\n  }\n  else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\nLAB_0030a940:\n    iVar5 = *param_2;\n  }" ({ "{") (labeled_statement "LAB_0030a940:\n    iVar5 = *param_2;" (statement_identifier "LAB_0030a940") (: ":") (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (} "}")) (else_clause "else {\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" (else "else") (compound_statement "{\n    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }\n    if (0 < iVar5) goto LAB_0030a940;\n    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n    iVar5 = *param_2;\n  }" ({ "{") (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }\n    else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043667c") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n    }" ({ "{") (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" (else "else") (compound_statement "{\n      SYNC(0);\n      iVar5 = *(int *)(local_28 + -4);\n      *(int *)(local_28 + -4) = iVar5 + -1;\n      SYNC(0);\n    }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (0 < iVar5) goto LAB_0030a940;" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0030a940;" (goto "goto") (statement_identifier "LAB_0030a940") (; ";"))) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" (( "(") (pointer_expression "*(code *)PTR__M_destroy_00432248" (* "*") (cast_expression "(code *)PTR__M_destroy_00432248" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_destroy_00432248"))) () ")")) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" (( "(") (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" (identifier "psVar7") (= "=") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28")))) (; ";")) (expression_statement "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x18))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x18))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x18)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x18)" (* "*") (cast_expression "(code **)(iVar5 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -0xc)" (* "*") (cast_expression "(int *)(local_28 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (if_statement "if (iVar5 + 1U < 0x20000000) {\n    iVar8 = (iVar5 + 1U) * 4;\n                    \n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" (if "if") (parenthesized_expression "(iVar5 + 1U < 0x20000000)" (( "(") (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" (identifier "iVar5") (+ "+") (number_literal "1U")) (< "<") (number_literal "0x20000000")) () ")")) (compound_statement "{\n    iVar8 = (iVar5 + 1U) * 4;\n                    \n    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n    *(int *)(param_3 + 0x24) = iVar6;\n    *(int *)(param_3 + 0x28) = iVar5;\n    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n    if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }\n    psVar7 = (string *)&local_28;\n    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);\n    iVar5 = *(int *)(local_28 + -0xc);\n    if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }\n                    \n    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();\n  }" ({ "{") (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" (identifier "iVar8") (= "=") (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" (( "(") (binary_expression "iVar5 + 1U" (identifier "iVar5") (+ "+") (number_literal "1U")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" (( "(") (pointer_expression "*(code *)PTR_operator_new___004322dc" (* "*") (cast_expression "(code *)PTR_operator_new___004322dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new___004322dc"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" (( "(") (pointer_expression "*(code *)PTR_copy_004322e4" (* "*") (cast_expression "(code *)PTR_copy_004322e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_copy_004322e4"))) () ")")) (argument_list "((string *)&local_28,iVar6,iVar5,0)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "iVar6") (, ",") (identifier "iVar5") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x24) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x24) = iVar6" (pointer_expression "*(int *)(param_3 + 0x24)" (* "*") (cast_expression "(int *)(param_3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(param_3 + 0x28) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x28) = iVar5" (pointer_expression "*(int *)(param_3 + 0x28)" (* "*") (cast_expression "(int *)(param_3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x28)" (( "(") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" (* "*") (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar8 + -4)" (( "(") (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" (identifier "iVar6") (+ "+") (identifier "iVar8")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((undefined *)(local_28 + -0xc) == puVar2) {\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }\n    else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" (if "if") (parenthesized_expression "((undefined *)(local_28 + -0xc) == puVar2)" (( "(") (binary_expression "(undefined *)(local_28 + -0xc) == puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (== "==") (identifier "puVar2")) () ")")) (compound_statement "{\nLAB_0030a9c0:\n      iVar5 = *param_2;\n    }" ({ "{") (labeled_statement "LAB_0030a9c0:\n      iVar5 = *param_2;" (statement_identifier "LAB_0030a9c0") (: ":") (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (} "}")) (else_clause "else {\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" (else "else") (compound_statement "{\n      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }\n      if (0 < iVar5) goto LAB_0030a9c0;\n      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n      iVar5 = *param_2;\n    }" ({ "{") (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }\n      else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043667c") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n      }" ({ "{") (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" (else "else") (compound_statement "{\n        SYNC(0);\n        iVar5 = *(int *)(local_28 + -4);\n        *(int *)(local_28 + -4) = iVar5 + -1;\n        SYNC(0);\n      }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (0 < iVar5) goto LAB_0030a9c0;" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0030a9c0;" (goto "goto") (statement_identifier "LAB_0030a9c0") (; ";"))) (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" (( "(") (pointer_expression "*(code *)PTR__M_destroy_00432248" (* "*") (cast_expression "(code *)PTR__M_destroy_00432248" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_destroy_00432248"))) () ")")) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" (( "(") (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "psVar7 = (string *)&local_28;" (assignment_expression "psVar7 = (string *)&local_28" (identifier "psVar7") (= "=") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28")))) (; ";")) (expression_statement "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x1c))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x1c)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x1c)" (* "*") (cast_expression "(code **)(iVar5 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x1c)" (( "(") (binary_expression "iVar5 + 0x1c" (identifier "iVar5") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -0xc);" (assignment_expression "iVar5 = *(int *)(local_28 + -0xc)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -0xc)" (* "*") (cast_expression "(int *)(local_28 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (if_statement "if (iVar5 + 1U < 0x20000000) {\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" (if "if") (parenthesized_expression "(iVar5 + 1U < 0x20000000)" (( "(") (binary_expression "iVar5 + 1U < 0x20000000" (binary_expression "iVar5 + 1U" (identifier "iVar5") (+ "+") (number_literal "1U")) (< "<") (number_literal "0x20000000")) () ")")) (compound_statement "{\n      iVar8 = (iVar5 + 1U) * 4;\n                    \n      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);\n      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);\n      *(int *)(param_3 + 0x2c) = iVar6;\n      *(int *)(param_3 + 0x30) = iVar5;\n      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;\n      if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }\n      iVar5 = *param_2;\nLAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x38) = local_28;\n      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);\n      *(int *)(param_3 + 0x3c) = local_28;\n      return;\n    }" ({ "{") (expression_statement "iVar8 = (iVar5 + 1U) * 4;" (assignment_expression "iVar8 = (iVar5 + 1U) * 4" (identifier "iVar8") (= "=") (binary_expression "(iVar5 + 1U) * 4" (parenthesized_expression "(iVar5 + 1U)" (( "(") (binary_expression "iVar5 + 1U" (identifier "iVar5") (+ "+") (number_literal "1U")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);" (assignment_expression "iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_operator_new___004322dc)(iVar8)" (parenthesized_expression "(*(code *)PTR_operator_new___004322dc)" (( "(") (pointer_expression "*(code *)PTR_operator_new___004322dc" (* "*") (cast_expression "(code *)PTR_operator_new___004322dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new___004322dc"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);" (call_expression "(*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0)" (parenthesized_expression "(*(code *)PTR_copy_004322e4)" (( "(") (pointer_expression "*(code *)PTR_copy_004322e4" (* "*") (cast_expression "(code *)PTR_copy_004322e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_copy_004322e4"))) () ")")) (argument_list "((string *)&local_28,iVar6,iVar5,0)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "iVar6") (, ",") (identifier "iVar5") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x2c) = iVar6;" (assignment_expression "*(int *)(param_3 + 0x2c) = iVar6" (pointer_expression "*(int *)(param_3 + 0x2c)" (* "*") (cast_expression "(int *)(param_3 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2c)" (( "(") (binary_expression "param_3 + 0x2c" (identifier "param_3") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(param_3 + 0x30) = iVar5;" (assignment_expression "*(int *)(param_3 + 0x30) = iVar5" (pointer_expression "*(int *)(param_3 + 0x30)" (* "*") (cast_expression "(int *)(param_3 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + iVar8 + -4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + iVar8 + -4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + iVar8 + -4)" (* "*") (cast_expression "(undefined4 *)(iVar6 + iVar8 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar8 + -4)" (( "(") (binary_expression "iVar6 + iVar8 + -4" (binary_expression "iVar6 + iVar8" (identifier "iVar6") (+ "+") (identifier "iVar8")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((undefined *)(local_28 + -0xc) != puVar2) {\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" (if "if") (parenthesized_expression "((undefined *)(local_28 + -0xc) != puVar2)" (( "(") (binary_expression "(undefined *)(local_28 + -0xc) != puVar2" (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (!= "!=") (identifier "puVar2")) () ")")) (compound_statement "{\n        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }\n        if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }\n      }" ({ "{") (if_statement "if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }\n        else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" (if "if") (parenthesized_expression "(PTR___pthread_key_create_0043667c == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_0043667c == (undefined *)0x0" (identifier "PTR___pthread_key_create_0043667c") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n        }" ({ "{") (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" (else "else") (compound_statement "{\n          SYNC(0);\n          iVar5 = *(int *)(local_28 + -4);\n          *(int *)(local_28 + -4) = iVar5 + -1;\n          SYNC(0);\n        }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(local_28 + -4);" (assignment_expression "iVar5 = *(int *)(local_28 + -4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*(int *)(local_28 + -4) = iVar5 + -1;" (assignment_expression "*(int *)(local_28 + -4) = iVar5 + -1" (pointer_expression "*(int *)(local_28 + -4)" (* "*") (cast_expression "(int *)(local_28 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -4)" (( "(") (binary_expression "local_28 + -4" (identifier "local_28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar5 < 1) {\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" (if "if") (parenthesized_expression "(iVar5 < 1)" (( "(") (binary_expression "iVar5 < 1" (identifier "iVar5") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);\n          iVar5 = *param_2;\n          goto LAB_0030aa44;\n        }" ({ "{") (expression_statement "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)PTR__M_destroy_00432248)" (( "(") (pointer_expression "*(code *)PTR__M_destroy_00432248" (* "*") (cast_expression "(code *)PTR__M_destroy_00432248" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_destroy_00432248"))) () ")")) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" (( "(") (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (goto_statement "goto LAB_0030aa44;" (goto "goto") (statement_identifier "LAB_0030aa44") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar5 = *param_2;" (assignment_expression "iVar5 = *param_2" (identifier "iVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (labeled_statement "LAB_0030aa44:\n      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" (statement_identifier "LAB_0030aa44") (: ":") (expression_statement "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);" (call_expression "(**(code **)(iVar5 + 0x24))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(iVar5 + 0x24))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x24)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x24)" (* "*") (cast_expression "(code **)(iVar5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "*(int *)(param_3 + 0x38) = local_28;" (assignment_expression "*(int *)(param_3 + 0x38) = local_28" (pointer_expression "*(int *)(param_3 + 0x38)" (* "*") (cast_expression "(int *)(param_3 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x38)" (( "(") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "local_28")) (; ";")) (expression_statement "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);" (call_expression "(**(code **)(*param_2 + 0x28))((string *)&local_28,param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x28)" (* "*") (cast_expression "(code **)(*param_2 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x28)" (( "(") (binary_expression "*param_2 + 0x28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "((string *)&local_28,param_2)" (( "(") (cast_expression "(string *)&local_28" (( "(") (type_descriptor "string *" (type_identifier "string") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x3c) = local_28;" (assignment_expression "*(int *)(param_3 + 0x3c) = local_28" (pointer_expression "*(int *)(param_3 + 0x3c)" (* "*") (cast_expression "(int *)(param_3 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3c)" (( "(") (binary_expression "param_3 + 0x3c" (identifier "param_3") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "local_28")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" (( "(") (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (* "*") (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___cxa_throw_bad_array_new_length_004322e8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();" (call_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)()" (parenthesized_expression "(*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)" (( "(") (pointer_expression "*(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (* "*") (cast_expression "(code *)PTR___cxa_throw_bad_array_new_length_004322e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___cxa_throw_bad_array_new_length_004322e8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" (if "if") (parenthesized_expression "((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0)" (( "(") (binary_expression "(undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0" (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (!= "!=") (identifier "PTR__S_empty_rep_storage_004322d0")) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);" (call_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24)" (parenthesized_expression "(*(code *)(PTR_LAB_00432208 + -0x3a80))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00432208 + -0x3a80)" (* "*") (cast_expression "(code *)(PTR_LAB_00432208 + -0x3a80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00432208 + -0x3a80)" (( "(") (binary_expression "PTR_LAB_00432208 + -0x3a80" (identifier "PTR_LAB_00432208") (+ "+") (number_literal "-0x3a80")) () ")")))) () ")")) (argument_list "((undefined *)(local_28 + -0xc),auStack_24)" (( "(") (cast_expression "(undefined *)(local_28 + -0xc)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0030ac08:\n  (*(code *)PTR_FUN_00432258)(psVar7);" (statement_identifier "LAB_0030ac08") (: ":") (expression_statement "(*(code *)PTR_FUN_00432258)(psVar7);" (call_expression "(*(code *)PTR_FUN_00432258)(psVar7)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" (( "(") (pointer_expression "*(code *)PTR_FUN_00432258" (* "*") (cast_expression "(code *)PTR_FUN_00432258" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00432258"))) () ")")) (argument_list "(psVar7)" (( "(") (identifier "psVar7") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))

/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,
   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */

void std::__facet_shims::__moneypunct_fill_cache<wchar_t,true>
               (type_2 param_1,int *param_2,int var_1)

{
  bool bVar1;
  type_1 *var_15;
  type_2 uVar3;
  char *pcVar4;
  int var_6;
  int var_12;
  type_3 *var_9;
  int var_14;
  type_4 var_3;
  int var_10;
  int var_2;
  type_5 auStack_24 [4];
  
  uVar3 = (**(type_6 **)(*param_2 + 8))(param_2);
  *(type_2 *)(var_1 + 0x14) = uVar3;
  uVar3 = (**(type_6 **)(*param_2 + 0xc))(param_2);
  *(type_2 *)(var_1 + 0x18) = uVar3;
  uVar3 = (**(type_6 **)(*param_2 + 0x20))(param_2);
  *(type_2 *)(var_1 + 0x34) = uVar3;
  *(type_2 *)(var_1 + 8) = 0;
  *(type_2 *)(var_1 + 0x1c) = 0;
  *(type_2 *)(var_1 + 0x24) = 0;
  *(type_2 *)(var_1 + 0x2c) = 0;
  *(type_5 *)(var_1 + 0x6c) = 1;
  (**(type_6 **)(*param_2 + 0x10))((type_3 *)&var_2,param_2);
  var_3 = *(type_4 *)(var_2 + -0xc);
                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */
  pcVar4 = (char *)(*(type_6 *)PTR_operator_new___004322dc)(var_3 + 1);
  std::string::var_4((type_3 *)&var_2,pcVar4,var_3,0);
  *(char **)(var_1 + 8) = pcVar4;
  pcVar4[var_3] = '\0';
  bVar1 = (type_7 *)(var_2 + -0xc) == (type_7 *)var_16;
  *(type_4 *)(var_1 + 0xc) = var_3;
  if (bVar1) {
LAB_0030a8bc:
    var_6 = *param_2;
  }
  else {
    if (var_5 == (type_1 *)0x0) {
      var_6 = *(int *)(var_2 + -4);
      *(int *)(var_2 + -4) = var_6 + -1;
    }
    else {
      var_7(0);
      var_6 = *(int *)(var_2 + -4);
      *(int *)(var_2 + -4) = var_6 + -1;
      var_7(0);
    }
    if (0 < var_6) goto LAB_0030a8bc;
    std::string::_Rep::var_8((type_7 *)(var_2 + -0xc));
    var_6 = *param_2;
  }
  (**(type_6 **)(var_6 + 0x14))((type_3 *)&var_2,param_2);
  var_6 = *(int *)(var_2 + -0xc);
  var_9 = (type_3 *)(var_6 + 1);
  if ((type_3 *)0x1fffffff < var_9) {
                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */
    (*(type_6 *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0
                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */
                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c
                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */
    if (var_2 + -0xc != var_10) {
      (*(type_6 *)(var_11 + -0x3ae0))(var_2 + -0xc,auStack_24);
    }
    goto LAB_0030ac08;
  }
                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */
  var_12 = (*(type_6 *)PTR_operator_new___004322dc)((int)var_9 * 4);
  (*(type_6 *)PTR_copy_004322e4)((type_3 *)&var_2,var_12,var_6,0);
  *(int *)(var_1 + 0x1c) = var_12;
  *(type_2 *)(var_12 + (int)var_9 * 4 + -4) = 0;
  var_15 = var_13;
  bVar1 = (type_1 *)(var_2 + -0xc) == var_13;
  *(int *)(var_1 + 0x20) = var_6;
  if (bVar1) {
LAB_0030a940:
    var_6 = *param_2;
  }
  else {
    if (var_5 == (type_1 *)0x0) {
      var_6 = *(int *)(var_2 + -4);
      *(int *)(var_2 + -4) = var_6 + -1;
    }
    else {
      var_7(0);
      var_6 = *(int *)(var_2 + -4);
      *(int *)(var_2 + -4) = var_6 + -1;
      var_7(0);
    }
    if (0 < var_6) goto LAB_0030a940;
    (*(type_6 *)PTR__M_destroy_00432248)((type_1 *)(var_2 + -0xc),auStack_24);
    var_6 = *param_2;
  }
  var_9 = (type_3 *)&var_2;
  (**(type_6 **)(var_6 + 0x18))((type_3 *)&var_2,param_2);
  var_6 = *(int *)(var_2 + -0xc);
  if (var_6 + 1U < 0x20000000) {
    var_14 = (var_6 + 1U) * 4;
                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */
    var_12 = (*(type_6 *)PTR_operator_new___004322dc)(var_14);
    (*(type_6 *)PTR_copy_004322e4)((type_3 *)&var_2,var_12,var_6,0);
    *(int *)(var_1 + 0x24) = var_12;
    *(int *)(var_1 + 0x28) = var_6;
    *(type_2 *)(var_12 + var_14 + -4) = 0;
    if ((type_1 *)(var_2 + -0xc) == var_15) {
LAB_0030a9c0:
      var_6 = *param_2;
    }
    else {
      if (var_5 == (type_1 *)0x0) {
        var_6 = *(int *)(var_2 + -4);
        *(int *)(var_2 + -4) = var_6 + -1;
      }
      else {
        var_7(0);
        var_6 = *(int *)(var_2 + -4);
        *(int *)(var_2 + -4) = var_6 + -1;
        var_7(0);
      }
      if (0 < var_6) goto LAB_0030a9c0;
      (*(type_6 *)PTR__M_destroy_00432248)((type_1 *)(var_2 + -0xc),auStack_24);
      var_6 = *param_2;
    }
    var_9 = (type_3 *)&var_2;
    (**(type_6 **)(var_6 + 0x1c))((type_3 *)&var_2,param_2);
    var_6 = *(int *)(var_2 + -0xc);
    if (var_6 + 1U < 0x20000000) {
      var_14 = (var_6 + 1U) * 4;
                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */
      var_12 = (*(type_6 *)PTR_operator_new___004322dc)(var_14);
      (*(type_6 *)PTR_copy_004322e4)((type_3 *)&var_2,var_12,var_6,0);
      *(int *)(var_1 + 0x2c) = var_12;
      *(int *)(var_1 + 0x30) = var_6;
      *(type_2 *)(var_12 + var_14 + -4) = 0;
      if ((type_1 *)(var_2 + -0xc) != var_15) {
        if (var_5 == (type_1 *)0x0) {
          var_6 = *(int *)(var_2 + -4);
          *(int *)(var_2 + -4) = var_6 + -1;
        }
        else {
          var_7(0);
          var_6 = *(int *)(var_2 + -4);
          *(int *)(var_2 + -4) = var_6 + -1;
          var_7(0);
        }
        if (var_6 < 1) {
          (*(type_6 *)PTR__M_destroy_00432248)((type_1 *)(var_2 + -0xc),auStack_24);
          var_6 = *param_2;
          goto LAB_0030aa44;
        }
      }
      var_6 = *param_2;
LAB_0030aa44:
      (**(type_6 **)(var_6 + 0x24))((type_3 *)&var_2,param_2);
      *(int *)(var_1 + 0x38) = var_2;
      (**(type_6 **)(*param_2 + 0x28))((type_3 *)&var_2,param_2);
      *(int *)(var_1 + 0x3c) = var_2;
      return;
    }
                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */
    (*(type_6 *)PTR___cxa_throw_bad_array_new_length_004322e8)();
  }
                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */
  (*(type_6 *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */
  if ((type_1 *)(var_2 + -0xc) != var_16) {
    (*(type_6 *)(var_11 + -0x3a80))((type_1 *)(var_2 + -0xc),auStack_24);
  }
LAB_0030ac08:
  (*(type_6 *)PTR__Unwind_Resume_00432258)(var_9);
  return;
}


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

/* void std::__facet_shims::__moneypunct_fill_cache<wchar_t, true>(std::integral_constant<bool,
   false>, std::locale::facet const*, std::__moneypunct_cache<wchar_t, true>*) */

void std::__facet_shims::MASKED
               (undefined4 param_1,int *param_2,int param_3)

{
  bool bVar1;
  undefined *puVar2;
  undefined4 uVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  string *psVar7;
  int iVar8;
  uint uVar9;
  int unaff_s5;
  int local_28;
  undefined1 auStack_24 [4];
  
  uVar3 = (**(code **)(*param_2 + 8))(param_2);
  *(undefined4 *)(param_3 + 0x14) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0xc))(param_2);
  *(undefined4 *)(param_3 + 0x18) = uVar3;
  uVar3 = (**(code **)(*param_2 + 0x20))(param_2);
  *(undefined4 *)(param_3 + 0x34) = uVar3;
  *(undefined4 *)(param_3 + 8) = 0;
  *(undefined4 *)(param_3 + 0x1c) = 0;
  *(undefined4 *)(param_3 + 0x24) = 0;
  *(undefined4 *)(param_3 + 0x2c) = 0;
  *(undefined1 *)(param_3 + 0x6c) = 1;
  (**(code **)(*param_2 + 0x10))((string *)&local_28,param_2);
  uVar9 = *(uint *)(local_28 + -0xc);
                    /* try { // try from 0030a870 to 0030a897 has its CatchHandler @ 0030ac2c */
  pcVar4 = (char *)(*(code *)PTR_operator_new___004322dc)(uVar9 + 1);
  string::copy((string *)&local_28,pcVar4,uVar9,0);
  *(char **)(param_3 + 8) = pcVar4;
  pcVar4[uVar9] = '\0';
  bVar1 = (allocator *)(local_28 + -0xc) == (allocator *)PTR__S_empty_rep_storage_004322d0;
  *(uint *)(param_3 + 0xc) = uVar9;
  if (bVar1) {
LAB_0030a8bc:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a8bc;
    string::_Rep::_M_destroy((allocator *)(local_28 + -0xc));
    iVar5 = *param_2;
  }
  (**(code **)(iVar5 + 0x14))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  psVar7 = (string *)(iVar5 + 1);
  if ((string *)0x1fffffff < psVar7) {
                    /* try { // try from 0030ac84 to 0030ac8b has its CatchHandler @ 0030ac5c */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a9f8 with catch @ 0030abe0
                       catch() { ... } // from try @ 0030ac18 with catch @ 0030abe0 */
                    /* catch() { ... } // from try @ 0030a978 with catch @ 0030ac8c
                       catch() { ... } // from try @ 0030ac24 with catch @ 0030ac8c */
    if (local_28 + -0xc != unaff_s5) {
      (*(code *)(PTR_LAB_00432208 + -0x3ae0))(local_28 + -0xc,auStack_24);
    }
    goto LAB_0030ac08;
  }
                    /* try { // try from 0030a8f4 to 0030a91b has its CatchHandler @ 0030ac5c */
  iVar6 = (*(code *)PTR_operator_new___004322dc)((int)psVar7 * 4);
  (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
  *(int *)(param_3 + 0x1c) = iVar6;
  *(undefined4 *)(iVar6 + (int)psVar7 * 4 + -4) = 0;
  puVar2 = PTR__S_empty_rep_storage_004322cc;
  bVar1 = (undefined *)(local_28 + -0xc) == PTR__S_empty_rep_storage_004322cc;
  *(int *)(param_3 + 0x20) = iVar5;
  if (bVar1) {
LAB_0030a940:
    iVar5 = *param_2;
  }
  else {
    if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
    }
    else {
      SYNC(0);
      iVar5 = *(int *)(local_28 + -4);
      *(int *)(local_28 + -4) = iVar5 + -1;
      SYNC(0);
    }
    if (0 < iVar5) goto LAB_0030a940;
    (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
    iVar5 = *param_2;
  }
  psVar7 = (string *)&local_28;
  (**(code **)(iVar5 + 0x18))((string *)&local_28,param_2);
  iVar5 = *(int *)(local_28 + -0xc);
  if (iVar5 + 1U < 0x20000000) {
    iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a978 to 0030a99f has its CatchHandler @ 0030ac8c */
    iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
    (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
    *(int *)(param_3 + 0x24) = iVar6;
    *(int *)(param_3 + 0x28) = iVar5;
    *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
    if ((undefined *)(local_28 + -0xc) == puVar2) {
LAB_0030a9c0:
      iVar5 = *param_2;
    }
    else {
      if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
      }
      else {
        SYNC(0);
        iVar5 = *(int *)(local_28 + -4);
        *(int *)(local_28 + -4) = iVar5 + -1;
        SYNC(0);
      }
      if (0 < iVar5) goto LAB_0030a9c0;
      (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
      iVar5 = *param_2;
    }
    psVar7 = (string *)&local_28;
    (**(code **)(iVar5 + 0x1c))((string *)&local_28,param_2);
    iVar5 = *(int *)(local_28 + -0xc);
    if (iVar5 + 1U < 0x20000000) {
      iVar8 = (iVar5 + 1U) * 4;
                    /* try { // try from 0030a9f8 to 0030aa1f has its CatchHandler @ 0030abe0 */
      iVar6 = (*(code *)PTR_operator_new___004322dc)(iVar8);
      (*(code *)PTR_copy_004322e4)((string *)&local_28,iVar6,iVar5,0);
      *(int *)(param_3 + 0x2c) = iVar6;
      *(int *)(param_3 + 0x30) = iVar5;
      *(undefined4 *)(iVar6 + iVar8 + -4) = 0;
      if ((undefined *)(local_28 + -0xc) != puVar2) {
        if (PTR___pthread_key_create_0043667c == (undefined *)0x0) {
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
        }
        else {
          SYNC(0);
          iVar5 = *(int *)(local_28 + -4);
          *(int *)(local_28 + -4) = iVar5 + -1;
          SYNC(0);
        }
        if (iVar5 < 1) {
          (*(code *)PTR__M_destroy_00432248)((undefined *)(local_28 + -0xc),auStack_24);
          iVar5 = *param_2;
          goto LAB_0030aa44;
        }
      }
      iVar5 = *param_2;
LAB_0030aa44:
      (**(code **)(iVar5 + 0x24))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x38) = local_28;
      (**(code **)(*param_2 + 0x28))((string *)&local_28,param_2);
      *(int *)(param_3 + 0x3c) = local_28;
      return;
    }
                    /* try { // try from 0030ac18 to 0030ac1f has its CatchHandler @ 0030abe0 */
    (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
  }
                    /* try { // try from 0030ac24 to 0030ac2b has its CatchHandler @ 0030ac8c */
  (*(code *)PTR___cxa_throw_bad_array_new_length_004322e8)();
                    /* catch() { ... } // from try @ 0030a870 with catch @ 0030ac2c */
  if ((undefined *)(local_28 + -0xc) != PTR__S_empty_rep_storage_004322d0) {
    (*(code *)(PTR_LAB_00432208 + -0x3a80))((undefined *)(local_28 + -0xc),auStack_24);
  }
LAB_0030ac08:
  (*(code *)PTR_FUN_00432258)(psVar7);
  return;
}

