
/* std::locale::_Impl::_M_install_facet(std::locale::id const*, std::locale::facet const*) */

void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)

{
  uint uVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  uint uVar6;
  id *this_00;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  uint uVar11;
  int iVar12;
  undefined *puVar13;
  uint uVar14;
  void *pvVar15;
  void *pvVar16;
  int iVar17;
  int *piVar18;
  
  if (param_2 == (facet *)0x0) {
    return;
  }
  uVar1 = locale::id::_M_id(param_1);
  if (*(int *)(this + 8) - 1U < uVar1) {
    uVar11 = uVar1 + 4;
    pvVar16 = *(void **)(this + 4);
    if (uVar11 < 0x20000000) {
      uVar14 = uVar11 * 4;
    }
    else {
      uVar14 = 0xffffffff;
    }
    puVar3 = (undefined4 *)operator_new__(uVar14);
    uVar6 = *(uint *)(this + 8);
    if (uVar6 != 0) {
      puVar4 = *(undefined4 **)(this + 4);
      puVar8 = puVar4 + uVar6;
      puVar5 = puVar3;
      do {
        uVar9 = *puVar4;
        puVar4 = puVar4 + 1;
        *puVar5 = uVar9;
        puVar5 = puVar5 + 1;
      } while (puVar4 != puVar8);
    }
    if (uVar6 < uVar11) {
      puVar5 = puVar3 + uVar6;
      do {
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      } while (puVar3 + uVar1 + 4 != puVar5);
    }
                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */
    pvVar15 = *(void **)(this + 0xc);
    puVar5 = (undefined4 *)operator_new__(uVar14);
    uVar14 = *(uint *)(this + 8);
    if (uVar14 != 0) {
      puVar8 = *(undefined4 **)(this + 0xc);
      puVar10 = puVar8 + uVar14;
      puVar4 = puVar5;
      do {
        uVar9 = *puVar8;
        puVar8 = puVar8 + 1;
        *puVar4 = uVar9;
        puVar4 = puVar4 + 1;
      } while (puVar10 != puVar8);
    }
    iVar17 = uVar1 * 4;
    if (uVar14 < uVar11) {
      puVar4 = puVar5 + uVar14;
      do {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      } while (puVar4 != puVar5 + uVar1 + 4);
    }
    *(uint *)(this + 8) = uVar11;
    *(undefined4 **)(this + 4) = puVar3;
    *(undefined4 **)(this + 0xc) = puVar5;
    if (pvVar16 != (void *)0x0) {
      operator_delete__(pvVar16);
    }
    if (pvVar15 == (void *)0x0) goto LAB_003347e0;
    operator_delete__(pvVar15);
    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;
LAB_00334af4:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
  }
  else {
    iVar17 = uVar1 << 2;
LAB_003347e0:
    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;
LAB_003347ec:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    SYNC(0);
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
    SYNC(0);
  }
  piVar18 = (int *)(*(int *)(this + 4) + iVar17);
  piVar2 = (int *)*piVar18;
  if (piVar2 != (int *)0x0) {
    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;
    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;
    if (this_00 == (id *)0x0) {
LAB_003348f0:
      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;
LAB_00334b40:
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
    }
    else {
      do {
        uVar11 = locale::id::_M_id(this_00);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)piVar7[1]);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
LAB_00334c14:
              piVar2 = (int *)*piVar18;
            }
            else {
LAB_003348e8:
              *piVar2 = iVar17;
              piVar2 = (int *)*piVar18;
            }
            goto LAB_003348f0;
          }
          break;
        }
        uVar11 = locale::id::_M_id((id *)piVar7[1]);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)*piVar7);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
              goto LAB_00334c14;
            }
            goto LAB_003348e8;
          }
          break;
        }
        piVar7 = piVar7 + 2;
        this_00 = (id *)*piVar7;
      } while (this_00 != (id *)0x0);
      piVar2 = (int *)*piVar18;
      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;
LAB_003348f8:
      SYNC(0);
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
      SYNC(0);
    }
    if (iVar17 == 1) {
                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */
      (**(code **)(*piVar2 + 4))(piVar2);
      uVar1 = *(uint *)(this + 8);
      goto LAB_00334924;
    }
  }
  uVar1 = *(uint *)(this + 8);
LAB_00334924:
  *piVar18 = (int)param_2;
  if (uVar1 != 0) {
    uVar11 = 0;
    iVar17 = *(int *)(this + 0xc);
    do {
      piVar2 = *(int **)(iVar17 + uVar11 * 4);
      if (piVar2 != (int *)0x0) {
        if (puVar13 == (undefined *)0x0) {
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          if (iVar17 != 1) goto LAB_00334960;
LAB_003349ac:
                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */
          (**(code **)(*piVar2 + 4))();
          iVar17 = *(int *)(this + 0xc);
        }
        else {
          SYNC(0);
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          SYNC(0);
          if (iVar17 == 1) goto LAB_003349ac;
LAB_00334960:
          iVar17 = *(int *)(this + 0xc);
        }
        uVar1 = *(uint *)(this + 8);
        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;
      }
      uVar11 = uVar11 + 1;
    } while (uVar11 < uVar1);
  }
  return;
}



/* std::locale::_Impl::_M_install_facet(std::locale::id const*, std::locale::facet const*) */

void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)

{
  uint uVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  uint uVar6;
  id *this_00;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  uint uVar11;
  int iVar12;
  undefined *puVar13;
  uint uVar14;
  void *pvVar15;
  void *pvVar16;
  int iVar17;
  int *piVar18;
  
  if (param_2 == (facet *)0x0) {
    return;
  }
  uVar1 = locale::id::_M_id(param_1);
  if (*(int *)(this + 8) - 1U < uVar1) {
    uVar11 = uVar1 + 4;
    pvVar16 = *(void **)(this + 4);
    if (uVar11 < 0x20000000) {
      uVar14 = uVar11 * 4;
    }
    else {
      uVar14 = 0xffffffff;
    }
    puVar3 = (undefined4 *)operator_new__(uVar14);
    uVar6 = *(uint *)(this + 8);
    if (uVar6 != 0) {
      puVar4 = *(undefined4 **)(this + 4);
      puVar8 = puVar4 + uVar6;
      puVar5 = puVar3;
      do {
        uVar9 = *puVar4;
        puVar4 = puVar4 + 1;
        *puVar5 = uVar9;
        puVar5 = puVar5 + 1;
      } while (puVar4 != puVar8);
    }
    if (uVar6 < uVar11) {
      puVar5 = puVar3 + uVar6;
      do {
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      } while (puVar3 + uVar1 + 4 != puVar5);
    }
                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */
    pvVar15 = *(void **)(this + 0xc);
    puVar5 = (undefined4 *)operator_new__(uVar14);
    uVar14 = *(uint *)(this + 8);
    if (uVar14 != 0) {
      puVar8 = *(undefined4 **)(this + 0xc);
      puVar10 = puVar8 + uVar14;
      puVar4 = puVar5;
      do {
        uVar9 = *puVar8;
        puVar8 = puVar8 + 1;
        *puVar4 = uVar9;
        puVar4 = puVar4 + 1;
      } while (puVar10 != puVar8);
    }
    iVar17 = uVar1 * 4;
    if (uVar14 < uVar11) {
      puVar4 = puVar5 + uVar14;
      do {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      } while (puVar4 != puVar5 + uVar1 + 4);
    }
    *(uint *)(this + 8) = uVar11;
    *(undefined4 **)(this + 4) = puVar3;
    *(undefined4 **)(this + 0xc) = puVar5;
    if (pvVar16 != (void *)0x0) {
      operator_delete__(pvVar16);
    }
    if (pvVar15 == (void *)0x0) goto LAB_003347e0;
    operator_delete__(pvVar15);
    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;
LAB_00334af4:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
  }
  else {
    iVar17 = uVar1 << 2;
LAB_003347e0:
    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;
LAB_003347ec:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    SYNC(0);
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
    SYNC(0);
  }
  piVar18 = (int *)(*(int *)(this + 4) + iVar17);
  piVar2 = (int *)*piVar18;
  if (piVar2 != (int *)0x0) {
    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;
    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;
    if (this_00 == (id *)0x0) {
LAB_003348f0:
      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;
LAB_00334b40:
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
    }
    else {
      do {
        uVar11 = locale::id::_M_id(this_00);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)piVar7[1]);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
LAB_00334c14:
              piVar2 = (int *)*piVar18;
            }
            else {
LAB_003348e8:
              *piVar2 = iVar17;
              piVar2 = (int *)*piVar18;
            }
            goto LAB_003348f0;
          }
          break;
        }
        uVar11 = locale::id::_M_id((id *)piVar7[1]);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)*piVar7);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
              goto LAB_00334c14;
            }
            goto LAB_003348e8;
          }
          break;
        }
        piVar7 = piVar7 + 2;
        this_00 = (id *)*piVar7;
      } while (this_00 != (id *)0x0);
      piVar2 = (int *)*piVar18;
      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;
LAB_003348f8:
      SYNC(0);
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
      SYNC(0);
    }
    if (iVar17 == 1) {
                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */
      (**(code **)(*piVar2 + 4))(piVar2);
      uVar1 = *(uint *)(this + 8);
      goto LAB_00334924;
    }
  }
  uVar1 = *(uint *)(this + 8);
LAB_00334924:
  *piVar18 = (int)param_2;
  if (uVar1 != 0) {
    uVar11 = 0;
    iVar17 = *(int *)(this + 0xc);
    do {
      piVar2 = *(int **)(iVar17 + uVar11 * 4);
      if (piVar2 != (int *)0x0) {
        if (puVar13 == (undefined *)0x0) {
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          if (iVar17 != 1) goto LAB_00334960;
LAB_003349ac:
                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */
          (**(code **)(*piVar2 + 4))();
          iVar17 = *(int *)(this + 0xc);
        }
        else {
          SYNC(0);
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          SYNC(0);
          if (iVar17 == 1) goto LAB_003349ac;
LAB_00334960:
          iVar17 = *(int *)(this + 0xc);
        }
        uVar1 = *(uint *)(this + 8);
        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;
      }
      uVar11 = uVar11 + 1;
    } while (uVar11 < uVar1);
  }
  return;
}


lui gp,0x19
addiu gp,gp,0x4ad0
addu gp,gp,t9
beq a2,zero,0x00334b30
_nop
addiu sp,sp,-0x48
lw t9,-0x65cc(gp)
sw s2,0x2c(sp)
or s2,a0,zero
sw gp,0x10(sp)
or a0,a1,zero
sw s3,0x30(sp)
or s3,a2,zero
sw s1,0x28(sp)
sw ra,0x44(sp)
sw s7,0x40(sp)
sw s6,0x3c(sp)
sw s5,0x38(sp)
sw s4,0x34(sp)
bal 0x0033470c
_sw s0,0x24(sp)
lw v1,0x8(s2)
or s1,v0,zero
addiu v1,v1,-0x1
sltu v1,v1,v0
bne v1,zero,0x003349c4
_lw gp,0x10(sp)
sll s7,v0,0x2
lw s4,-0x37a0(gp)
beq s4,zero,0x00334af4
_nop
sync 0x0
ll at,0x4(s3)
addiu at,at,0x1
sc at,0x4(s3)
beq at,zero,0x003347f0
_nop
sync 0x0
lw v1,0x4(s2)
addu s7,v1,s7
lw v0,0x0(s7)
beq v0,zero,0x00334920
_lw s0,-0x4098(gp)
lw a0,0x0(s0)
bne a0,zero,0x00334850
_lw t9,-0x65cc(gp)
b 0x003348f0
_nop
bal 0x0033470c
_nop
beq v0,s1,0x00334b78
_lw gp,0x10(sp)
addiu s0,s0,0x8
lw a0,0x0(s0)
beq a0,zero,0x00334b38
_lw t9,-0x65cc(gp)
bal 0x0033470c
_nop
lw gp,0x10(sp)
lw a0,0x4(s0)
bne v0,s1,0x00334830
_lw t9,-0x65cc(gp)
bal 0x0033470c
_lw s1,0x4(s2)
sll v0,v0,0x2
addu s1,s1,v0
lw v0,0x0(s1)
beq v0,zero,0x00334b38
_lw gp,0x10(sp)
lw t9,-0x4094(gp)
or a0,s3,zero
jalr t9
_lw a1,0x4(s0)
beq s4,zero,0x00334c1c
_or s0,v0,zero
sync 0x0
ll at,0x4(v0)
addiu at,at,0x1
sc at,0x4(v0)
beq at,zero,0x003348a0
_nop
sync 0x0
beq s4,zero,0x00334c54
_lw a0,0x0(s1)
sync 0x0
ll v0,0x4(a0)
addiu at,v0,-0x1
sc at,0x4(a0)
beq at,zero,0x003348c4
_nop
sync 0x0
li v1,0x1
beq v0,v1,0x00334c3c
_nop
sw s0,0x0(s1)
lw v0,0x0(s7)
beq s4,zero,0x00334b40
_nop
sync 0x0
ll v1,0x4(v0)
addiu at,v1,-0x1
sc at,0x4(v0)
beq at,zero,0x003348fc
_nop
sync 0x0
li a0,0x1
beq v1,a0,0x00334b58
_nop
lw a1,0x8(s2)
beq a1,zero,0x00334b04
_sw s3,0x0(s7)
or s0,zero,zero
lw v0,0xc(s2)
b 0x00334980
_li s3,0x1
sync 0x0
ll v0,0x4(a0)
addiu at,v0,-0x1
sc at,0x4(a0)
beq at,zero,0x00334940
_nop
sync 0x0
beq v0,s3,0x003349ac
_nop
lw v0,0xc(s2)
lw a1,0x8(s2)
addu s1,v0,s1
sw zero,0x0(s1)
addiu s0,s0,0x1
sltu v1,s0,a1
beq v1,zero,0x00334b08
_lw ra,0x44(sp)
sll s1,s0,0x2
addu v1,v0,s1
lw a0,0x0(v1)
beq a0,zero,0x00334970
_nop
bne s4,zero,0x0033493c
_nop
lw v0,0x4(a0)
addiu v1,v0,-0x1
bne v0,s3,0x00334960
_sw v1,0x4(a0)
lw v0,0x0(a0)
lw t9,0x4(v0)
jalr t9
_nop
b 0x00334964
_lw v0,0xc(s2)
addiu s0,v0,0x4
lui v0,0x2000
sltu v0,s0,v0
bne v0,zero,0x00334b70
_lw s6,0x4(s2)
li s5,-0x1
lw t9,-0x7ef4(gp)
bal 0x0032e990
_or a0,s5,zero
lw v1,0x8(s2)
or s4,v0,zero
beq v1,zero,0x00334a1c
_lw gp,0x10(sp)
lw v0,0x4(s2)
sll a2,v1,0x2
or a0,s4,zero
addu a2,a2,v0
lw a1,0x0(v0)
addiu a0,a0,0x4
addiu v0,v0,0x4
bne v0,a2,0x00334a08
_sw a1,-0x4(a0)
sltu v0,v1,s0
beq v0,zero,0x00334a48
_sll s7,s1,0x2
sll v0,v1,0x2
addiu v1,s7,0x10
addu v0,s4,v0
addu v1,s4,v1
sw zero,0x0(v0)
addiu v0,v0,0x4
bne v1,v0,0x00334a38
_nop
lw t9,-0x7ef4(gp)
or a0,s5,zero
bal 0x0032e990
_lw s5,0xc(s2)
lw v1,0x8(s2)
beq v1,zero,0x00334a88
_lw gp,0x10(sp)
lw a0,0xc(s2)
sll a3,v1,0x2
or a1,v0,zero
addu a3,a3,a0
lw a2,0x0(a0)
addiu a1,a1,0x4
addiu a0,a0,0x4
bne a3,a0,0x00334a74
_sw a2,-0x4(a1)
sltu a0,v1,s0
beq a0,zero,0x00334ab4
_sll s7,s1,0x2
sll v1,v1,0x2
addiu a0,s7,0x10
addu v1,v0,v1
addu a0,v0,a0
sw zero,0x0(v1)
addiu v1,v1,0x4
bne v1,a0,0x00334aa4
_nop
sw s0,0x8(s2)
sw s4,0x4(s2)
beq s6,zero,0x00334ad4
_sw v0,0xc(s2)
lw t9,-0x7088(gp)
bal 0x00330e80
_or a0,s6,zero
lw gp,0x10(sp)
beq s5,zero,0x003347e0
_lw t9,-0x7088(gp)
bal 0x00330e80
_or a0,s5,zero
lw gp,0x10(sp)
lw s4,-0x37a0(gp)
bne s4,zero,0x003347ec
_nop
lw v0,0x4(s3)
addiu v0,v0,0x1
b 0x00334808
_sw v0,0x4(s3)
lw ra,0x44(sp)
lw s7,0x40(sp)
lw s6,0x3c(sp)
lw s5,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x48
jr ra
_nop
bne s4,zero,0x003348f8
_lw v0,0x0(s7)
lw v1,0x4(v0)
addiu a0,v1,-0x1
sw a0,0x4(v0)
li a0,0x1
bne v1,a0,0x00334920
_nop
lw v1,0x0(v0)
lw t9,0x4(v1)
jalr t9
_or a0,v0,zero
b 0x00334924
_lw a1,0x8(s2)
b 0x003349dc
_sll s5,s0,0x2
lw t9,-0x65cc(gp)
lw a0,0x0(s0)
bal 0x0033470c
_lw s1,0x4(s2)
sll v0,v0,0x2
addu s1,s1,v0
lw v0,0x0(s1)
beq v0,zero,0x00334b38
_lw gp,0x10(sp)
lw t9,-0x4090(gp)
or a0,s3,zero
jalr t9
_lw a1,0x0(s0)
beq s4,zero,0x00334c2c
_or s0,v0,zero
sync 0x0
ll at,0x4(v0)
addiu at,at,0x1
sc at,0x4(v0)
beq at,zero,0x00334bb8
_nop
sync 0x0
beq s4,zero,0x00334c64
_lw a0,0x0(s1)
sync 0x0
ll v0,0x4(a0)
addiu at,v0,-0x1
sc at,0x4(a0)
beq at,zero,0x00334bdc
_nop
sync 0x0
li v1,0x1
bne v0,v1,0x003348e8
_nop
lw v0,0x0(a0)
lw t9,0x4(v0)
jalr t9
_nop
sw s0,0x0(s1)
b 0x003348f0
_lw v0,0x0(s7)
lw v0,0x4(v0)
addiu v0,v0,0x1
b 0x003348b8
_sw v0,0x4(s0)
lw v0,0x4(v0)
addiu v0,v0,0x1
b 0x00334bd0
_sw v0,0x4(s0)
lw v0,0x0(a0)
lw t9,0x4(v0)
jalr t9
_nop
b 0x00334c14
_sw s0,0x0(s1)
lw v0,0x4(a0)
addiu v1,v0,-0x1
b 0x003348dc
_sw v1,0x4(a0)
lw v0,0x4(a0)
addiu v1,v0,-0x1
b 0x00334bf4
_sw v1,0x4(a0)
(translation_unit "/* std::locale::_Impl::_M_install_facet(std::locale::id const*, std::locale::facet const*) */\n\nvoid __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::locale::_Impl::" identifier : : identifier : : identifier : :) (function_declarator "_M_install_facet(_Impl *this,id *param_1,facet *param_2)" identifier (parameter_list "(_Impl *this,id *param_1,facet *param_2)" ( (parameter_declaration "_Impl *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "id *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "facet *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "id *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "void *pvVar15;" primitive_type (pointer_declarator "*pvVar15" * identifier) ;) (declaration "void *pvVar16;" primitive_type (pointer_declarator "*pvVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (if_statement "if (param_2 == (facet *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_2 == (facet *)0x0)" ( (binary_expression "param_2 == (facet *)0x0" identifier == (cast_expression "(facet *)0x0" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (ERROR "uVar1 = locale::" (assignment_expression "uVar1 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(param_1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(param_1);" (call_expression "_M_id(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (if_statement "if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" if (parenthesized_expression "(*(int *)(this + 8) - 1U < uVar1)" ( (binary_expression "*(int *)(this + 8) - 1U < uVar1" (binary_expression "*(int *)(this + 8) - 1U" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) - number_literal) < identifier) )) (compound_statement "{\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }" { (expression_statement "uVar11 = uVar1 + 4;" (assignment_expression "uVar11 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) (expression_statement "pvVar16 = *(void **)(this + 4);" (assignment_expression "pvVar16 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }" if (parenthesized_expression "(uVar11 < 0x20000000)" ( (binary_expression "uVar11 < 0x20000000" identifier < number_literal) )) (compound_statement "{\n      uVar14 = uVar11 * 4;\n    }" { (expression_statement "uVar14 = uVar11 * 4;" (assignment_expression "uVar14 = uVar11 * 4" identifier = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n      uVar14 = 0xffffffff;\n    }" else (compound_statement "{\n      uVar14 = 0xffffffff;\n    }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "puVar3 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar3 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar6 = *(uint *)(this + 8);" (assignment_expression "uVar6 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" { (expression_statement "puVar4 = *(undefined4 **)(this + 4);" (assignment_expression "puVar4 = *(undefined4 **)(this + 4)" identifier = (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar4 + uVar6;" (assignment_expression "puVar8 = puVar4 + uVar6" identifier = (binary_expression "puVar4 + uVar6" identifier + identifier)) ;) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar9;" (assignment_expression "*puVar5 = uVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar8)" ( (binary_expression "puVar4 != puVar8" identifier != identifier) )) ;) })) (if_statement "if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" if (parenthesized_expression "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" { (expression_statement "puVar5 = puVar3 + uVar6;" (assignment_expression "puVar5 = puVar3 + uVar6" identifier = (binary_expression "puVar3 + uVar6" identifier + identifier)) ;) (do_statement "do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);" do (compound_statement "{\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + uVar1 + 4 != puVar5)" ( (binary_expression "puVar3 + uVar1 + 4 != puVar5" (binary_expression "puVar3 + uVar1 + 4" (binary_expression "puVar3 + uVar1" identifier + identifier) + number_literal) != identifier) )) ;) })) comment (expression_statement "pvVar15 = *(void **)(this + 0xc);" (assignment_expression "pvVar15 = *(void **)(this + 0xc)" identifier = (pointer_expression "*(void **)(this + 0xc)" * (cast_expression "(void **)(this + 0xc)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar5 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar14 = *(uint *)(this + 8);" (assignment_expression "uVar14 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" { (expression_statement "puVar8 = *(undefined4 **)(this + 0xc);" (assignment_expression "puVar8 = *(undefined4 **)(this + 0xc)" identifier = (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar10 = puVar8 + uVar14;" (assignment_expression "puVar10 = puVar8 + uVar14" identifier = (binary_expression "puVar8 + uVar14" identifier + identifier)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "uVar9 = *puVar8;" (assignment_expression "uVar9 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = uVar9;" (assignment_expression "*puVar4 = uVar9" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != puVar8)" ( (binary_expression "puVar10 != puVar8" identifier != identifier) )) ;) })) (expression_statement "iVar17 = uVar1 * 4;" (assignment_expression "iVar17 = uVar1 * 4" identifier = (binary_expression "uVar1 * 4" identifier * number_literal)) ;) (if_statement "if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" if (parenthesized_expression "(uVar14 < uVar11)" ( (binary_expression "uVar14 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" { (expression_statement "puVar4 = puVar5 + uVar14;" (assignment_expression "puVar4 = puVar5 + uVar14" identifier = (binary_expression "puVar5 + uVar14" identifier + identifier)) ;) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);" do (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar5 + uVar1 + 4)" ( (binary_expression "puVar4 != puVar5 + uVar1 + 4" identifier != (binary_expression "puVar5 + uVar1 + 4" (binary_expression "puVar5 + uVar1" identifier + identifier) + number_literal)) )) ;) })) (expression_statement "*(uint *)(this + 8) = uVar11;" (assignment_expression "*(uint *)(this + 8) = uVar11" (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 4) = puVar3;" (assignment_expression "*(undefined4 **)(this + 4) = puVar3" (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 0xc) = puVar5;" (assignment_expression "*(undefined4 **)(this + 0xc) = puVar5" (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }" if (parenthesized_expression "(pvVar16 != (void *)0x0)" ( (binary_expression "pvVar16 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      operator_delete__(pvVar16);\n    }" { (expression_statement "operator_delete__(pvVar16);" (call_expression "operator_delete__(pvVar16)" identifier (argument_list "(pvVar16)" ( identifier ))) ;) })) (if_statement "if (pvVar15 == (void *)0x0) goto LAB_003347e0;" if (parenthesized_expression "(pvVar15 == (void *)0x0)" ( (binary_expression "pvVar15 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347e0;" goto statement_identifier ;)) (expression_statement "operator_delete__(pvVar15);" (call_expression "operator_delete__(pvVar15)" identifier (argument_list "(pvVar15)" ( identifier ))) ;) (if_statement "if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 != (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347ec;" goto statement_identifier ;)) (labeled_statement "LAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" else (compound_statement "{\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" { (expression_statement "iVar17 = uVar1 << 2;" (assignment_expression "iVar17 = uVar1 << 2" identifier = (binary_expression "uVar1 << 2" identifier << number_literal)) ;) (labeled_statement "LAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" statement_identifier : (if_statement "if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334af4;" goto statement_identifier ;))) (labeled_statement "LAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar18 = (int *)(*(int *)(this + 4) + iVar17);" (assignment_expression "piVar18 = (int *)(*(int *)(this + 4) + iVar17)" identifier = (cast_expression "(int *)(*(int *)(this + 4) + iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this + 4) + iVar17)" ( (binary_expression "*(int *)(this + 4) + iVar17" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" { (expression_statement "this_00 = *(id **)PTR__S_twinned_facets_004c51a8;" (assignment_expression "this_00 = *(id **)PTR__S_twinned_facets_004c51a8" identifier = (pointer_expression "*(id **)PTR__S_twinned_facets_004c51a8" * (cast_expression "(id **)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "id **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar7 = (int *)PTR__S_twinned_facets_004c51a8;" (assignment_expression "piVar7 = (int *)PTR__S_twinned_facets_004c51a8" identifier = (cast_expression "(int *)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(this_00 == (id *)0x0)" ( (binary_expression "this_00 == (id *)0x0" identifier == (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }" { (labeled_statement "LAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" statement_identifier : (if_statement "if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" if (parenthesized_expression "(puVar13 != (undefined *)0x0)" ( (binary_expression "puVar13 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003348f8;" goto statement_identifier ;))) (labeled_statement "LAB_00334b40:\n      iVar17 = piVar2[1];" statement_identifier : (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;)) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" { (do_statement "do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);" do (compound_statement "{\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      }" { (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(this_00);" (call_expression "_M_id(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);" (assignment_expression "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" identifier = (call_expression "(*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" (parenthesized_expression "(*(code *)PTR__M_sso_shim_004c51ac)" ( (pointer_expression "*(code *)PTR__M_sso_shim_004c51ac" * (cast_expression "(code *)PTR__M_sso_shim_004c51ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar7[1])" ( identifier , (subscript_expression "piVar7[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }" { comment (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (labeled_statement "LAB_00334c14:\n              piVar2 = (int *)*piVar18;" statement_identifier : (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;)) }) (else_clause "else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" else (compound_statement "{\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" { (labeled_statement "LAB_003348e8:\n              *piVar2 = iVar17;" statement_identifier : (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;)) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) }))) (goto_statement "goto LAB_003348f0;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)*piVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)*piVar7);" (call_expression "_M_id((id *)*piVar7)" identifier (argument_list "((id *)*piVar7)" ( (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);" (assignment_expression "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" identifier = (call_expression "(*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" (parenthesized_expression "(*(code *)PTR__M_cow_shim_004c51b0)" ( (pointer_expression "*(code *)PTR__M_cow_shim_004c51b0" * (cast_expression "(code *)PTR__M_cow_shim_004c51b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,*piVar7)" ( identifier , (pointer_expression "*piVar7" * identifier) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" { comment (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (goto_statement "goto LAB_00334c14;" goto statement_identifier ;) })) (goto_statement "goto LAB_003348e8;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar7 = piVar7 + 2;" (assignment_expression "piVar7 = piVar7 + 2" identifier = (binary_expression "piVar7 + 2" identifier + number_literal)) ;) (expression_statement "this_00 = (id *)*piVar7;" (assignment_expression "this_00 = (id *)*piVar7" identifier = (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }) while (parenthesized_expression "(this_00 != (id *)0x0)" ( (binary_expression "this_00 != (id *)0x0" identifier != (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) goto LAB_00334b40;" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334b40;" goto statement_identifier ;)) (labeled_statement "LAB_003348f8:\n      SYNC(0);" statement_identifier : (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;)) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" { comment (expression_statement "(**(code **)(*piVar2 + 4))(piVar2);" (call_expression "(**(code **)(*piVar2 + 4))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00334924;" goto statement_identifier ;) })) })) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00334924:\n  *piVar18 = (int)param_2;" statement_identifier : (expression_statement "*piVar18 = (int)param_2;" (assignment_expression "*piVar18 = (int)param_2" (pointer_expression "*piVar18" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (do_statement "do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);" do (compound_statement "{\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    }" { (expression_statement "piVar2 = *(int **)(iVar17 + uVar11 * 4);" (assignment_expression "piVar2 = *(int **)(iVar17 + uVar11 * 4)" identifier = (pointer_expression "*(int **)(iVar17 + uVar11 * 4)" * (cast_expression "(int **)(iVar17 + uVar11 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" { (if_statement "if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (if_statement "if (iVar17 != 1) goto LAB_00334960;" if (parenthesized_expression "(iVar17 != 1)" ( (binary_expression "iVar17 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00334960;" goto statement_identifier ;)) (labeled_statement "LAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();" statement_identifier : comment (expression_statement "(**(code **)(*piVar2 + 4))();" (call_expression "(**(code **)(*piVar2 + 4))()" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (iVar17 == 1) goto LAB_003349ac;" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (goto_statement "goto LAB_003349ac;" goto statement_identifier ;)) (labeled_statement "LAB_00334960:\n          iVar17 = *(int *)(this + 0xc);" statement_identifier : (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar17 + uVar11 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + uVar11 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + uVar11 * 4)" * (cast_expression "(undefined4 *)(iVar17 + uVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) )))) = number_literal) ;) })) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < uVar1)" ( (binary_expression "uVar11 < uVar1" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* std::locale::_Impl::_M_install_facet(std::locale::id const*, std::locale::facet const*) */\n\nvoid __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::locale::_Impl::" identifier : : identifier : : identifier : :) (function_declarator "_M_install_facet(_Impl *this,id *param_1,facet *param_2)" identifier (parameter_list "(_Impl *this,id *param_1,facet *param_2)" ( (parameter_declaration "_Impl *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "id *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "facet *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "id *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "void *pvVar15;" primitive_type (pointer_declarator "*pvVar15" * identifier) ;) (declaration "void *pvVar16;" primitive_type (pointer_declarator "*pvVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (if_statement "if (param_2 == (facet *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_2 == (facet *)0x0)" ( (binary_expression "param_2 == (facet *)0x0" identifier == (cast_expression "(facet *)0x0" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (ERROR "uVar1 = locale::" (assignment_expression "uVar1 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(param_1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(param_1);" (call_expression "_M_id(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (if_statement "if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" if (parenthesized_expression "(*(int *)(this + 8) - 1U < uVar1)" ( (binary_expression "*(int *)(this + 8) - 1U < uVar1" (binary_expression "*(int *)(this + 8) - 1U" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) - number_literal) < identifier) )) (compound_statement "{\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */\n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }" { (expression_statement "uVar11 = uVar1 + 4;" (assignment_expression "uVar11 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) (expression_statement "pvVar16 = *(void **)(this + 4);" (assignment_expression "pvVar16 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }" if (parenthesized_expression "(uVar11 < 0x20000000)" ( (binary_expression "uVar11 < 0x20000000" identifier < number_literal) )) (compound_statement "{\n      uVar14 = uVar11 * 4;\n    }" { (expression_statement "uVar14 = uVar11 * 4;" (assignment_expression "uVar14 = uVar11 * 4" identifier = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n      uVar14 = 0xffffffff;\n    }" else (compound_statement "{\n      uVar14 = 0xffffffff;\n    }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "puVar3 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar3 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar6 = *(uint *)(this + 8);" (assignment_expression "uVar6 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" { (expression_statement "puVar4 = *(undefined4 **)(this + 4);" (assignment_expression "puVar4 = *(undefined4 **)(this + 4)" identifier = (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar4 + uVar6;" (assignment_expression "puVar8 = puVar4 + uVar6" identifier = (binary_expression "puVar4 + uVar6" identifier + identifier)) ;) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar9;" (assignment_expression "*puVar5 = uVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar8)" ( (binary_expression "puVar4 != puVar8" identifier != identifier) )) ;) })) (if_statement "if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" if (parenthesized_expression "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" { (expression_statement "puVar5 = puVar3 + uVar6;" (assignment_expression "puVar5 = puVar3 + uVar6" identifier = (binary_expression "puVar3 + uVar6" identifier + identifier)) ;) (do_statement "do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);" do (compound_statement "{\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + uVar1 + 4 != puVar5)" ( (binary_expression "puVar3 + uVar1 + 4 != puVar5" (binary_expression "puVar3 + uVar1 + 4" (binary_expression "puVar3 + uVar1" identifier + identifier) + number_literal) != identifier) )) ;) })) comment (expression_statement "pvVar15 = *(void **)(this + 0xc);" (assignment_expression "pvVar15 = *(void **)(this + 0xc)" identifier = (pointer_expression "*(void **)(this + 0xc)" * (cast_expression "(void **)(this + 0xc)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar5 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar14 = *(uint *)(this + 8);" (assignment_expression "uVar14 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" { (expression_statement "puVar8 = *(undefined4 **)(this + 0xc);" (assignment_expression "puVar8 = *(undefined4 **)(this + 0xc)" identifier = (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar10 = puVar8 + uVar14;" (assignment_expression "puVar10 = puVar8 + uVar14" identifier = (binary_expression "puVar8 + uVar14" identifier + identifier)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "uVar9 = *puVar8;" (assignment_expression "uVar9 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = uVar9;" (assignment_expression "*puVar4 = uVar9" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != puVar8)" ( (binary_expression "puVar10 != puVar8" identifier != identifier) )) ;) })) (expression_statement "iVar17 = uVar1 * 4;" (assignment_expression "iVar17 = uVar1 * 4" identifier = (binary_expression "uVar1 * 4" identifier * number_literal)) ;) (if_statement "if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" if (parenthesized_expression "(uVar14 < uVar11)" ( (binary_expression "uVar14 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" { (expression_statement "puVar4 = puVar5 + uVar14;" (assignment_expression "puVar4 = puVar5 + uVar14" identifier = (binary_expression "puVar5 + uVar14" identifier + identifier)) ;) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);" do (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar5 + uVar1 + 4)" ( (binary_expression "puVar4 != puVar5 + uVar1 + 4" identifier != (binary_expression "puVar5 + uVar1 + 4" (binary_expression "puVar5 + uVar1" identifier + identifier) + number_literal)) )) ;) })) (expression_statement "*(uint *)(this + 8) = uVar11;" (assignment_expression "*(uint *)(this + 8) = uVar11" (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 4) = puVar3;" (assignment_expression "*(undefined4 **)(this + 4) = puVar3" (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 0xc) = puVar5;" (assignment_expression "*(undefined4 **)(this + 0xc) = puVar5" (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }" if (parenthesized_expression "(pvVar16 != (void *)0x0)" ( (binary_expression "pvVar16 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      operator_delete__(pvVar16);\n    }" { (expression_statement "operator_delete__(pvVar16);" (call_expression "operator_delete__(pvVar16)" identifier (argument_list "(pvVar16)" ( identifier ))) ;) })) (if_statement "if (pvVar15 == (void *)0x0) goto LAB_003347e0;" if (parenthesized_expression "(pvVar15 == (void *)0x0)" ( (binary_expression "pvVar15 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347e0;" goto statement_identifier ;)) (expression_statement "operator_delete__(pvVar15);" (call_expression "operator_delete__(pvVar15)" identifier (argument_list "(pvVar15)" ( identifier ))) ;) (if_statement "if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 != (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347ec;" goto statement_identifier ;)) (labeled_statement "LAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" else (compound_statement "{\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" { (expression_statement "iVar17 = uVar1 << 2;" (assignment_expression "iVar17 = uVar1 << 2" identifier = (binary_expression "uVar1 << 2" identifier << number_literal)) ;) (labeled_statement "LAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" statement_identifier : (if_statement "if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334af4;" goto statement_identifier ;))) (labeled_statement "LAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar18 = (int *)(*(int *)(this + 4) + iVar17);" (assignment_expression "piVar18 = (int *)(*(int *)(this + 4) + iVar17)" identifier = (cast_expression "(int *)(*(int *)(this + 4) + iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this + 4) + iVar17)" ( (binary_expression "*(int *)(this + 4) + iVar17" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" { (expression_statement "this_00 = *(id **)PTR__S_twinned_facets_004c51a8;" (assignment_expression "this_00 = *(id **)PTR__S_twinned_facets_004c51a8" identifier = (pointer_expression "*(id **)PTR__S_twinned_facets_004c51a8" * (cast_expression "(id **)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "id **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar7 = (int *)PTR__S_twinned_facets_004c51a8;" (assignment_expression "piVar7 = (int *)PTR__S_twinned_facets_004c51a8" identifier = (cast_expression "(int *)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(this_00 == (id *)0x0)" ( (binary_expression "this_00 == (id *)0x0" identifier == (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }" { (labeled_statement "LAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" statement_identifier : (if_statement "if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" if (parenthesized_expression "(puVar13 != (undefined *)0x0)" ( (binary_expression "puVar13 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003348f8;" goto statement_identifier ;))) (labeled_statement "LAB_00334b40:\n      iVar17 = piVar2[1];" statement_identifier : (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;)) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" { (do_statement "do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);" do (compound_statement "{\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      }" { (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(this_00);" (call_expression "_M_id(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);" (assignment_expression "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" identifier = (call_expression "(*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" (parenthesized_expression "(*(code *)PTR__M_sso_shim_004c51ac)" ( (pointer_expression "*(code *)PTR__M_sso_shim_004c51ac" * (cast_expression "(code *)PTR__M_sso_shim_004c51ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar7[1])" ( identifier , (subscript_expression "piVar7[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }" { comment (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (labeled_statement "LAB_00334c14:\n              piVar2 = (int *)*piVar18;" statement_identifier : (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;)) }) (else_clause "else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" else (compound_statement "{\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" { (labeled_statement "LAB_003348e8:\n              *piVar2 = iVar17;" statement_identifier : (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;)) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) }))) (goto_statement "goto LAB_003348f0;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)*piVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)*piVar7);" (call_expression "_M_id((id *)*piVar7)" identifier (argument_list "((id *)*piVar7)" ( (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);" (assignment_expression "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" identifier = (call_expression "(*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" (parenthesized_expression "(*(code *)PTR__M_cow_shim_004c51b0)" ( (pointer_expression "*(code *)PTR__M_cow_shim_004c51b0" * (cast_expression "(code *)PTR__M_cow_shim_004c51b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,*piVar7)" ( identifier , (pointer_expression "*piVar7" * identifier) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */\n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" { comment (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (goto_statement "goto LAB_00334c14;" goto statement_identifier ;) })) (goto_statement "goto LAB_003348e8;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar7 = piVar7 + 2;" (assignment_expression "piVar7 = piVar7 + 2" identifier = (binary_expression "piVar7 + 2" identifier + number_literal)) ;) (expression_statement "this_00 = (id *)*piVar7;" (assignment_expression "this_00 = (id *)*piVar7" identifier = (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }) while (parenthesized_expression "(this_00 != (id *)0x0)" ( (binary_expression "this_00 != (id *)0x0" identifier != (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) goto LAB_00334b40;" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334b40;" goto statement_identifier ;)) (labeled_statement "LAB_003348f8:\n      SYNC(0);" statement_identifier : (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;)) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar17 == 1) {\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */\n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" { comment (expression_statement "(**(code **)(*piVar2 + 4))(piVar2);" (call_expression "(**(code **)(*piVar2 + 4))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00334924;" goto statement_identifier ;) })) })) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00334924:\n  *piVar18 = (int)param_2;" statement_identifier : (expression_statement "*piVar18 = (int)param_2;" (assignment_expression "*piVar18 = (int)param_2" (pointer_expression "*piVar18" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (do_statement "do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);" do (compound_statement "{\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    }" { (expression_statement "piVar2 = *(int **)(iVar17 + uVar11 * 4);" (assignment_expression "piVar2 = *(int **)(iVar17 + uVar11 * 4)" identifier = (pointer_expression "*(int **)(iVar17 + uVar11 * 4)" * (cast_expression "(int **)(iVar17 + uVar11 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" { (if_statement "if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (if_statement "if (iVar17 != 1) goto LAB_00334960;" if (parenthesized_expression "(iVar17 != 1)" ( (binary_expression "iVar17 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00334960;" goto statement_identifier ;)) (labeled_statement "LAB_003349ac:\n                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */\n          (**(code **)(*piVar2 + 4))();" statement_identifier : comment (expression_statement "(**(code **)(*piVar2 + 4))();" (call_expression "(**(code **)(*piVar2 + 4))()" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (iVar17 == 1) goto LAB_003349ac;" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (goto_statement "goto LAB_003349ac;" goto statement_identifier ;)) (labeled_statement "LAB_00334960:\n          iVar17 = *(int *)(this + 0xc);" statement_identifier : (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar17 + uVar11 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + uVar11 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + uVar11 * 4)" * (cast_expression "(undefined4 *)(iVar17 + uVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) )))) = number_literal) ;) })) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < uVar1)" ( (binary_expression "uVar11 < uVar1" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}\n\n" (function_definition "void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::locale::_Impl::" identifier : : identifier : : identifier : :) (function_declarator "_M_install_facet(_Impl *this,id *param_1,facet *param_2)" identifier (parameter_list "(_Impl *this,id *param_1,facet *param_2)" ( (parameter_declaration "_Impl *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "id *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "facet *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "id *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "void *pvVar15;" primitive_type (pointer_declarator "*pvVar15" * identifier) ;) (declaration "void *pvVar16;" primitive_type (pointer_declarator "*pvVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (if_statement "if (param_2 == (facet *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_2 == (facet *)0x0)" ( (binary_expression "param_2 == (facet *)0x0" identifier == (cast_expression "(facet *)0x0" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (ERROR "uVar1 = locale::" (assignment_expression "uVar1 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(param_1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(param_1);" (call_expression "_M_id(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (if_statement "if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" if (parenthesized_expression "(*(int *)(this + 8) - 1U < uVar1)" ( (binary_expression "*(int *)(this + 8) - 1U < uVar1" (binary_expression "*(int *)(this + 8) - 1U" (pointer_expression "*(int *)(this + 8)" * (cast_expression "(int *)(this + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) - number_literal) < identifier) )) (compound_statement "{\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }" { (expression_statement "uVar11 = uVar1 + 4;" (assignment_expression "uVar11 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) (expression_statement "pvVar16 = *(void **)(this + 4);" (assignment_expression "pvVar16 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }" if (parenthesized_expression "(uVar11 < 0x20000000)" ( (binary_expression "uVar11 < 0x20000000" identifier < number_literal) )) (compound_statement "{\n      uVar14 = uVar11 * 4;\n    }" { (expression_statement "uVar14 = uVar11 * 4;" (assignment_expression "uVar14 = uVar11 * 4" identifier = (binary_expression "uVar11 * 4" identifier * number_literal)) ;) }) (else_clause "else {\n      uVar14 = 0xffffffff;\n    }" else (compound_statement "{\n      uVar14 = 0xffffffff;\n    }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "puVar3 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar3 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar6 = *(uint *)(this + 8);" (assignment_expression "uVar6 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" { (expression_statement "puVar4 = *(undefined4 **)(this + 4);" (assignment_expression "puVar4 = *(undefined4 **)(this + 4)" identifier = (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar4 + uVar6;" (assignment_expression "puVar8 = puVar4 + uVar6" identifier = (binary_expression "puVar4 + uVar6" identifier + identifier)) ;) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar9;" (assignment_expression "*puVar5 = uVar9" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar8)" ( (binary_expression "puVar4 != puVar8" identifier != identifier) )) ;) })) (if_statement "if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" if (parenthesized_expression "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" { (expression_statement "puVar5 = puVar3 + uVar6;" (assignment_expression "puVar5 = puVar3 + uVar6" identifier = (binary_expression "puVar3 + uVar6" identifier + identifier)) ;) (do_statement "do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);" do (compound_statement "{\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 + uVar1 + 4 != puVar5)" ( (binary_expression "puVar3 + uVar1 + 4 != puVar5" (binary_expression "puVar3 + uVar1 + 4" (binary_expression "puVar3 + uVar1" identifier + identifier) + number_literal) != identifier) )) ;) })) (expression_statement "pvVar15 = *(void **)(this + 0xc);" (assignment_expression "pvVar15 = *(void **)(this + 0xc)" identifier = (pointer_expression "*(void **)(this + 0xc)" * (cast_expression "(void **)(this + 0xc)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar5 = (undefined4 *)operator_new__(uVar14)" identifier = (cast_expression "(undefined4 *)operator_new__(uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "uVar14 = *(uint *)(this + 8);" (assignment_expression "uVar14 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" { (expression_statement "puVar8 = *(undefined4 **)(this + 0xc);" (assignment_expression "puVar8 = *(undefined4 **)(this + 0xc)" identifier = (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar10 = puVar8 + uVar14;" (assignment_expression "puVar10 = puVar8 + uVar14" identifier = (binary_expression "puVar8 + uVar14" identifier + identifier)) ;) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" identifier = identifier) ;) (do_statement "do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);" do (compound_statement "{\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "uVar9 = *puVar8;" (assignment_expression "uVar9 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "*puVar4 = uVar9;" (assignment_expression "*puVar4 = uVar9" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != puVar8)" ( (binary_expression "puVar10 != puVar8" identifier != identifier) )) ;) })) (expression_statement "iVar17 = uVar1 * 4;" (assignment_expression "iVar17 = uVar1 * 4" identifier = (binary_expression "uVar1 * 4" identifier * number_literal)) ;) (if_statement "if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" if (parenthesized_expression "(uVar14 < uVar11)" ( (binary_expression "uVar14 < uVar11" identifier < identifier) )) (compound_statement "{\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" { (expression_statement "puVar4 = puVar5 + uVar14;" (assignment_expression "puVar4 = puVar5 + uVar14" identifier = (binary_expression "puVar5 + uVar14" identifier + identifier)) ;) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);" do (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar5 + uVar1 + 4)" ( (binary_expression "puVar4 != puVar5 + uVar1 + 4" identifier != (binary_expression "puVar5 + uVar1 + 4" (binary_expression "puVar5 + uVar1" identifier + identifier) + number_literal)) )) ;) })) (expression_statement "*(uint *)(this + 8) = uVar11;" (assignment_expression "*(uint *)(this + 8) = uVar11" (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 4) = puVar3;" (assignment_expression "*(undefined4 **)(this + 4) = puVar3" (pointer_expression "*(undefined4 **)(this + 4)" * (cast_expression "(undefined4 **)(this + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(this + 0xc) = puVar5;" (assignment_expression "*(undefined4 **)(this + 0xc) = puVar5" (pointer_expression "*(undefined4 **)(this + 0xc)" * (cast_expression "(undefined4 **)(this + 0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }" if (parenthesized_expression "(pvVar16 != (void *)0x0)" ( (binary_expression "pvVar16 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      operator_delete__(pvVar16);\n    }" { (expression_statement "operator_delete__(pvVar16);" (call_expression "operator_delete__(pvVar16)" identifier (argument_list "(pvVar16)" ( identifier ))) ;) })) (if_statement "if (pvVar15 == (void *)0x0) goto LAB_003347e0;" if (parenthesized_expression "(pvVar15 == (void *)0x0)" ( (binary_expression "pvVar15 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347e0;" goto statement_identifier ;)) (expression_statement "operator_delete__(pvVar15);" (call_expression "operator_delete__(pvVar15)" identifier (argument_list "(pvVar15)" ( identifier ))) ;) (if_statement "if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 != (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003347ec;" goto statement_identifier ;)) (labeled_statement "LAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" else (compound_statement "{\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" { (expression_statement "iVar17 = uVar1 << 2;" (assignment_expression "iVar17 = uVar1 << 2" identifier = (binary_expression "uVar1 << 2" identifier << number_literal)) ;) (labeled_statement "LAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" statement_identifier : (if_statement "if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" if (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 == (undefined *)0x0)" ( (binary_expression "PTR___pthread_key_create_004c5aa0 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334af4;" goto statement_identifier ;))) (labeled_statement "LAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" statement_identifier : (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" identifier = identifier) ;)) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar18 = (int *)(*(int *)(this + 4) + iVar17);" (assignment_expression "piVar18 = (int *)(*(int *)(this + 4) + iVar17)" identifier = (cast_expression "(int *)(*(int *)(this + 4) + iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(this + 4) + iVar17)" ( (binary_expression "*(int *)(this + 4) + iVar17" (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" { (expression_statement "this_00 = *(id **)PTR__S_twinned_facets_004c51a8;" (assignment_expression "this_00 = *(id **)PTR__S_twinned_facets_004c51a8" identifier = (pointer_expression "*(id **)PTR__S_twinned_facets_004c51a8" * (cast_expression "(id **)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "id **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar7 = (int *)PTR__S_twinned_facets_004c51a8;" (assignment_expression "piVar7 = (int *)PTR__S_twinned_facets_004c51a8" identifier = (cast_expression "(int *)PTR__S_twinned_facets_004c51a8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" if (parenthesized_expression "(this_00 == (id *)0x0)" ( (binary_expression "this_00 == (id *)0x0" identifier == (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }" { (labeled_statement "LAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" statement_identifier : (if_statement "if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" if (parenthesized_expression "(puVar13 != (undefined *)0x0)" ( (binary_expression "puVar13 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003348f8;" goto statement_identifier ;))) (labeled_statement "LAB_00334b40:\n      iVar17 = piVar2[1];" statement_identifier : (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;)) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" else (compound_statement "{\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" { (do_statement "do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);" do (compound_statement "{\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      }" { (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id(this_00);" (call_expression "_M_id(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);" (assignment_expression "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" identifier = (call_expression "(*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" (parenthesized_expression "(*(code *)PTR__M_sso_shim_004c51ac)" ( (pointer_expression "*(code *)PTR__M_sso_shim_004c51ac" * (cast_expression "(code *)PTR__M_sso_shim_004c51ac" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar7[1])" ( identifier , (subscript_expression "piVar7[1]" identifier [ number_literal ]) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }" { (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (labeled_statement "LAB_00334c14:\n              piVar2 = (int *)*piVar18;" statement_identifier : (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;)) }) (else_clause "else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" else (compound_statement "{\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" { (labeled_statement "LAB_003348e8:\n              *piVar2 = iVar17;" statement_identifier : (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;)) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) }))) (goto_statement "goto LAB_003348f0;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)piVar7[1]);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" identifier (argument_list "((id *)piVar7[1])" ( (cast_expression "(id *)piVar7[1]" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) ))) ;)) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" if (parenthesized_expression "(uVar11 == uVar1)" ( (binary_expression "uVar11 == uVar1" identifier == identifier) )) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" { (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" identifier = (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)*piVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)*piVar7);" (call_expression "_M_id((id *)*piVar7)" identifier (argument_list "((id *)*piVar7)" ( (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;)) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(int *)(iVar12 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" if (parenthesized_expression "(*piVar2 != 0)" ( (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" * identifier) != number_literal) )) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" { (expression_statement "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);" (assignment_expression "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" identifier = (call_expression "(*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" (parenthesized_expression "(*(code *)PTR__M_cow_shim_004c51b0)" ( (pointer_expression "*(code *)PTR__M_cow_shim_004c51b0" * (cast_expression "(code *)PTR__M_cow_shim_004c51b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,*piVar7)" ( identifier , (pointer_expression "*piVar7" * identifier) )))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" { (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" { (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" else (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" { (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" ( (pointer_expression "**(code **)(*piVar7 + 4)" * (pointer_expression "*(code **)(*piVar7 + 4)" * (cast_expression "(code **)(*piVar7 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 4)" ( (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" * identifier) = identifier) ;) (goto_statement "goto LAB_00334c14;" goto statement_identifier ;) })) (goto_statement "goto LAB_003348e8;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar7 = piVar7 + 2;" (assignment_expression "piVar7 = piVar7 + 2" identifier = (binary_expression "piVar7 + 2" identifier + number_literal)) ;) (expression_statement "this_00 = (id *)*piVar7;" (assignment_expression "this_00 = (id *)*piVar7" identifier = (cast_expression "(id *)*piVar7" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }) while (parenthesized_expression "(this_00 != (id *)0x0)" ( (binary_expression "this_00 != (id *)0x0" identifier != (cast_expression "(id *)0x0" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" identifier = (cast_expression "(int *)*piVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar18" * identifier))) ;) (if_statement "if (puVar13 == (undefined *)0x0) goto LAB_00334b40;" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00334b40;" goto statement_identifier ;)) (labeled_statement "LAB_003348f8:\n      SYNC(0);" statement_identifier : (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;)) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) }))) (if_statement "if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" { (expression_statement "(**(code **)(*piVar2 + 4))(piVar2);" (call_expression "(**(code **)(*piVar2 + 4))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00334924;" goto statement_identifier ;) })) })) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00334924:\n  *piVar18 = (int)param_2;" statement_identifier : (expression_statement "*piVar18 = (int)param_2;" (assignment_expression "*piVar18 = (int)param_2" (pointer_expression "*piVar18" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) (do_statement "do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);" do (compound_statement "{\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    }" { (expression_statement "piVar2 = *(int **)(iVar17 + uVar11 * 4);" (assignment_expression "piVar2 = *(int **)(iVar17 + uVar11 * 4)" identifier = (pointer_expression "*(int **)(iVar17 + uVar11 * 4)" * (cast_expression "(int **)(iVar17 + uVar11 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" { (if_statement "if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" if (parenthesized_expression "(puVar13 == (undefined *)0x0)" ( (binary_expression "puVar13 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (if_statement "if (iVar17 != 1) goto LAB_00334960;" if (parenthesized_expression "(iVar17 != 1)" ( (binary_expression "iVar17 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00334960;" goto statement_identifier ;)) (labeled_statement "LAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();" statement_identifier : (expression_statement "(**(code **)(*piVar2 + 4))();" (call_expression "(**(code **)(*piVar2 + 4))()" (parenthesized_expression "(**(code **)(*piVar2 + 4))" ( (pointer_expression "**(code **)(*piVar2 + 4)" * (pointer_expression "*(code **)(*piVar2 + 4)" * (cast_expression "(code **)(*piVar2 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" else (compound_statement "{\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" { (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (if_statement "if (iVar17 == 1) goto LAB_003349ac;" if (parenthesized_expression "(iVar17 == 1)" ( (binary_expression "iVar17 == 1" identifier == number_literal) )) (goto_statement "goto LAB_003349ac;" goto statement_identifier ;)) (labeled_statement "LAB_00334960:\n          iVar17 = *(int *)(this + 0xc);" statement_identifier : (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" identifier = (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" identifier = (pointer_expression "*(uint *)(this + 8)" * (cast_expression "(uint *)(this + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar17 + uVar11 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + uVar11 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + uVar11 * 4)" * (cast_expression "(undefined4 *)(iVar17 + uVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + uVar11 * 4)" ( (binary_expression "iVar17 + uVar11 * 4" identifier + (binary_expression "uVar11 * 4" identifier * number_literal)) )))) = number_literal) ;) })) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < uVar1)" ( (binary_expression "uVar11 < uVar1" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + LIT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_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 * (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 = (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 + (binary_expression IDENT * LIT)) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void __thiscall std::locale::_Impl::_M_install_facet(_Impl *this,id *param_1,facet *param_2)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "std::locale::_Impl::" (identifier "std") (: ":") (: ":") (identifier "locale") (: ":") (: ":") (identifier "_Impl") (: ":") (: ":")) (function_declarator "_M_install_facet(_Impl *this,id *param_1,facet *param_2)" (identifier "_M_install_facet") (parameter_list "(_Impl *this,id *param_1,facet *param_2)" (( "(") (parameter_declaration "_Impl *this" (type_identifier "_Impl") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "id *param_1" (type_identifier "id") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "facet *param_2" (type_identifier "facet") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  id *this_00;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  uint uVar14;\n  void *pvVar15;\n  void *pvVar16;\n  int iVar17;\n  int *piVar18;\n  \n  if (param_2 == (facet *)0x0) {\n    return;\n  }\n  uVar1 = locale::id::_M_id(param_1);\n  if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }\n  piVar18 = (int *)(*(int *)(this + 4) + iVar17);\n  piVar2 = (int *)*piVar18;\n  if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }\n  uVar1 = *(uint *)(this + 8);\nLAB_00334924:\n  *piVar18 = (int)param_2;\n  if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "id *this_00;" (type_identifier "id") (pointer_declarator "*this_00" (* "*") (identifier "this_00")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "void *pvVar15;" (primitive_type "void") (pointer_declarator "*pvVar15" (* "*") (identifier "pvVar15")) (; ";")) (declaration "void *pvVar16;" (primitive_type "void") (pointer_declarator "*pvVar16" (* "*") (identifier "pvVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (if_statement "if (param_2 == (facet *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == (facet *)0x0)" (( "(") (binary_expression "param_2 == (facet *)0x0" (identifier "param_2") (== "==") (cast_expression "(facet *)0x0" (( "(") (type_descriptor "facet *" (type_identifier "facet") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (ERROR "uVar1 = locale::" (assignment_expression "uVar1 = locale" (identifier "uVar1") (= "=") (identifier "locale")) (: ":") (: ":")) (labeled_statement "id::_M_id(param_1);" (statement_identifier "id") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_id(param_1);" (call_expression "_M_id(param_1)" (identifier "_M_id") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";"))) (if_statement "if (*(int *)(this + 8) - 1U < uVar1) {\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }\n  else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" (if "if") (parenthesized_expression "(*(int *)(this + 8) - 1U < uVar1)" (( "(") (binary_expression "*(int *)(this + 8) - 1U < uVar1" (binary_expression "*(int *)(this + 8) - 1U" (pointer_expression "*(int *)(this + 8)" (* "*") (cast_expression "(int *)(this + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (- "-") (number_literal "1U")) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    uVar11 = uVar1 + 4;\n    pvVar16 = *(void **)(this + 4);\n    if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }\n    puVar3 = (undefined4 *)operator_new__(uVar14);\n    uVar6 = *(uint *)(this + 8);\n    if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }\n    if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }\n                    \n    pvVar15 = *(void **)(this + 0xc);\n    puVar5 = (undefined4 *)operator_new__(uVar14);\n    uVar14 = *(uint *)(this + 8);\n    if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }\n    iVar17 = uVar1 * 4;\n    if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }\n    *(uint *)(this + 8) = uVar11;\n    *(undefined4 **)(this + 4) = puVar3;\n    *(undefined4 **)(this + 0xc) = puVar5;\n    if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }\n    if (pvVar15 == (void *)0x0) goto LAB_003347e0;\n    operator_delete__(pvVar15);\n    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;\nLAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n  }" ({ "{") (expression_statement "uVar11 = uVar1 + 4;" (assignment_expression "uVar11 = uVar1 + 4" (identifier "uVar11") (= "=") (binary_expression "uVar1 + 4" (identifier "uVar1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "pvVar16 = *(void **)(this + 4);" (assignment_expression "pvVar16 = *(void **)(this + 4)" (identifier "pvVar16") (= "=") (pointer_expression "*(void **)(this + 4)" (* "*") (cast_expression "(void **)(this + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (uVar11 < 0x20000000) {\n      uVar14 = uVar11 * 4;\n    }\n    else {\n      uVar14 = 0xffffffff;\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x20000000)" (( "(") (binary_expression "uVar11 < 0x20000000" (identifier "uVar11") (< "<") (number_literal "0x20000000")) () ")")) (compound_statement "{\n      uVar14 = uVar11 * 4;\n    }" ({ "{") (expression_statement "uVar14 = uVar11 * 4;" (assignment_expression "uVar14 = uVar11 * 4" (identifier "uVar14") (= "=") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n      uVar14 = 0xffffffff;\n    }" (else "else") (compound_statement "{\n      uVar14 = 0xffffffff;\n    }" ({ "{") (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (expression_statement "puVar3 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar3 = (undefined4 *)operator_new__(uVar14)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)operator_new__(uVar14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "operator_new__(uVar14)" (identifier "operator_new__") (argument_list "(uVar14)" (( "(") (identifier "uVar14") () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(this + 8);" (assignment_expression "uVar6 = *(uint *)(this + 8)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar6 != 0) {\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar4 = *(undefined4 **)(this + 4);\n      puVar8 = puVar4 + uVar6;\n      puVar5 = puVar3;\n      do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);\n    }" ({ "{") (expression_statement "puVar4 = *(undefined4 **)(this + 4);" (assignment_expression "puVar4 = *(undefined4 **)(this + 4)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(this + 4)" (* "*") (cast_expression "(undefined4 **)(this + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar8 = puVar4 + uVar6;" (assignment_expression "puVar8 = puVar4 + uVar6" (identifier "puVar8") (= "=") (binary_expression "puVar4 + uVar6" (identifier "puVar4") (+ "+") (identifier "uVar6"))) (; ";")) (expression_statement "puVar5 = puVar3;" (assignment_expression "puVar5 = puVar3" (identifier "puVar5") (= "=") (identifier "puVar3")) (; ";")) (do_statement "do {\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      } while (puVar4 != puVar8);" (do "do") (compound_statement "{\n        uVar9 = *puVar4;\n        puVar4 = puVar4 + 1;\n        *puVar5 = uVar9;\n        puVar5 = puVar5 + 1;\n      }" ({ "{") (expression_statement "uVar9 = *puVar4;" (assignment_expression "uVar9 = *puVar4" (identifier "uVar9") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = uVar9;" (assignment_expression "*puVar5 = uVar9" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != puVar8)" (( "(") (binary_expression "puVar4 != puVar8" (identifier "puVar4") (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar6 < uVar11) {\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" (if "if") (parenthesized_expression "(uVar6 < uVar11)" (( "(") (binary_expression "uVar6 < uVar11" (identifier "uVar6") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n      puVar5 = puVar3 + uVar6;\n      do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);\n    }" ({ "{") (expression_statement "puVar5 = puVar3 + uVar6;" (assignment_expression "puVar5 = puVar3 + uVar6" (identifier "puVar5") (= "=") (binary_expression "puVar3 + uVar6" (identifier "puVar3") (+ "+") (identifier "uVar6"))) (; ";")) (do_statement "do {\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (puVar3 + uVar1 + 4 != puVar5);" (do "do") (compound_statement "{\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" ({ "{") (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 + uVar1 + 4 != puVar5)" (( "(") (binary_expression "puVar3 + uVar1 + 4 != puVar5" (binary_expression "puVar3 + uVar1 + 4" (binary_expression "puVar3 + uVar1" (identifier "puVar3") (+ "+") (identifier "uVar1")) (+ "+") (number_literal "4")) (!= "!=") (identifier "puVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "pvVar15 = *(void **)(this + 0xc);" (assignment_expression "pvVar15 = *(void **)(this + 0xc)" (identifier "pvVar15") (= "=") (pointer_expression "*(void **)(this + 0xc)" (* "*") (cast_expression "(void **)(this + 0xc)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar5 = (undefined4 *)operator_new__(uVar14);" (assignment_expression "puVar5 = (undefined4 *)operator_new__(uVar14)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)operator_new__(uVar14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "operator_new__(uVar14)" (identifier "operator_new__") (argument_list "(uVar14)" (( "(") (identifier "uVar14") () ")"))))) (; ";")) (expression_statement "uVar14 = *(uint *)(this + 8);" (assignment_expression "uVar14 = *(uint *)(this + 8)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar14 != 0) {\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" (if "if") (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar8 = *(undefined4 **)(this + 0xc);\n      puVar10 = puVar8 + uVar14;\n      puVar4 = puVar5;\n      do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);\n    }" ({ "{") (expression_statement "puVar8 = *(undefined4 **)(this + 0xc);" (assignment_expression "puVar8 = *(undefined4 **)(this + 0xc)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(this + 0xc)" (* "*") (cast_expression "(undefined4 **)(this + 0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar10 = puVar8 + uVar14;" (assignment_expression "puVar10 = puVar8 + uVar14" (identifier "puVar10") (= "=") (binary_expression "puVar8 + uVar14" (identifier "puVar8") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "puVar4 = puVar5;" (assignment_expression "puVar4 = puVar5" (identifier "puVar4") (= "=") (identifier "puVar5")) (; ";")) (do_statement "do {\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      } while (puVar10 != puVar8);" (do "do") (compound_statement "{\n        uVar9 = *puVar8;\n        puVar8 = puVar8 + 1;\n        *puVar4 = uVar9;\n        puVar4 = puVar4 + 1;\n      }" ({ "{") (expression_statement "uVar9 = *puVar8;" (assignment_expression "uVar9 = *puVar8" (identifier "uVar9") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar4 = uVar9;" (assignment_expression "*puVar4 = uVar9" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar10 != puVar8)" (( "(") (binary_expression "puVar10 != puVar8" (identifier "puVar10") (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar17 = uVar1 * 4;" (assignment_expression "iVar17 = uVar1 * 4" (identifier "iVar17") (= "=") (binary_expression "uVar1 * 4" (identifier "uVar1") (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar14 < uVar11) {\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" (if "if") (parenthesized_expression "(uVar14 < uVar11)" (( "(") (binary_expression "uVar14 < uVar11" (identifier "uVar14") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n      puVar4 = puVar5 + uVar14;\n      do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);\n    }" ({ "{") (expression_statement "puVar4 = puVar5 + uVar14;" (assignment_expression "puVar4 = puVar5 + uVar14" (identifier "puVar4") (= "=") (binary_expression "puVar5 + uVar14" (identifier "puVar5") (+ "+") (identifier "uVar14"))) (; ";")) (do_statement "do {\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      } while (puVar4 != puVar5 + uVar1 + 4);" (do "do") (compound_statement "{\n        *puVar4 = 0;\n        puVar4 = puVar4 + 1;\n      }" ({ "{") (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != puVar5 + uVar1 + 4)" (( "(") (binary_expression "puVar4 != puVar5 + uVar1 + 4" (identifier "puVar4") (!= "!=") (binary_expression "puVar5 + uVar1 + 4" (binary_expression "puVar5 + uVar1" (identifier "puVar5") (+ "+") (identifier "uVar1")) (+ "+") (number_literal "4"))) () ")")) (; ";")) (} "}"))) (expression_statement "*(uint *)(this + 8) = uVar11;" (assignment_expression "*(uint *)(this + 8) = uVar11" (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(undefined4 **)(this + 4) = puVar3;" (assignment_expression "*(undefined4 **)(this + 4) = puVar3" (pointer_expression "*(undefined4 **)(this + 4)" (* "*") (cast_expression "(undefined4 **)(this + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*(undefined4 **)(this + 0xc) = puVar5;" (assignment_expression "*(undefined4 **)(this + 0xc) = puVar5" (pointer_expression "*(undefined4 **)(this + 0xc)" (* "*") (cast_expression "(undefined4 **)(this + 0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (pvVar16 != (void *)0x0) {\n      operator_delete__(pvVar16);\n    }" (if "if") (parenthesized_expression "(pvVar16 != (void *)0x0)" (( "(") (binary_expression "pvVar16 != (void *)0x0" (identifier "pvVar16") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      operator_delete__(pvVar16);\n    }" ({ "{") (expression_statement "operator_delete__(pvVar16);" (call_expression "operator_delete__(pvVar16)" (identifier "operator_delete__") (argument_list "(pvVar16)" (( "(") (identifier "pvVar16") () ")"))) (; ";")) (} "}"))) (if_statement "if (pvVar15 == (void *)0x0) goto LAB_003347e0;" (if "if") (parenthesized_expression "(pvVar15 == (void *)0x0)" (( "(") (binary_expression "pvVar15 == (void *)0x0" (identifier "pvVar15") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_003347e0;" (goto "goto") (statement_identifier "LAB_003347e0") (; ";"))) (expression_statement "operator_delete__(pvVar15);" (call_expression "operator_delete__(pvVar15)" (identifier "operator_delete__") (argument_list "(pvVar15)" (( "(") (identifier "pvVar15") () ")"))) (; ";")) (if_statement "if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;" (if "if") (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 != (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_004c5aa0 != (undefined *)0x0" (identifier "PTR___pthread_key_create_004c5aa0") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_003347ec;" (goto "goto") (statement_identifier "LAB_003347ec") (; ";"))) (labeled_statement "LAB_00334af4:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" (statement_identifier "LAB_00334af4") (: ":") (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" (identifier "puVar13") (= "=") (identifier "PTR___pthread_key_create_004c5aa0")) (; ";"))) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" (else "else") (compound_statement "{\n    iVar17 = uVar1 << 2;\nLAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;\nLAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;\n    SYNC(0);\n    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;\n    SYNC(0);\n  }" ({ "{") (expression_statement "iVar17 = uVar1 << 2;" (assignment_expression "iVar17 = uVar1 << 2" (identifier "iVar17") (= "=") (binary_expression "uVar1 << 2" (identifier "uVar1") (<< "<<") (number_literal "2"))) (; ";")) (labeled_statement "LAB_003347e0:\n    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" (statement_identifier "LAB_003347e0") (: ":") (if_statement "if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;" (if "if") (parenthesized_expression "(PTR___pthread_key_create_004c5aa0 == (undefined *)0x0)" (( "(") (binary_expression "PTR___pthread_key_create_004c5aa0 == (undefined *)0x0" (identifier "PTR___pthread_key_create_004c5aa0") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00334af4;" (goto "goto") (statement_identifier "LAB_00334af4") (; ";")))) (labeled_statement "LAB_003347ec:\n    puVar13 = PTR___pthread_key_create_004c5aa0;" (statement_identifier "LAB_003347ec") (: ":") (expression_statement "puVar13 = PTR___pthread_key_create_004c5aa0;" (assignment_expression "puVar13 = PTR___pthread_key_create_004c5aa0" (identifier "puVar13") (= "=") (identifier "PTR___pthread_key_create_004c5aa0")) (; ";"))) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;" (assignment_expression "*(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_2 + 4) + 1" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "piVar18 = (int *)(*(int *)(this + 4) + iVar17);" (assignment_expression "piVar18 = (int *)(*(int *)(this + 4) + iVar17)" (identifier "piVar18") (= "=") (cast_expression "(int *)(*(int *)(this + 4) + iVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(this + 4) + iVar17)" (( "(") (binary_expression "*(int *)(this + 4) + iVar17" (pointer_expression "*(int *)(this + 4)" (* "*") (cast_expression "(int *)(this + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "iVar17")) () ")")))) (; ";")) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar18" (* "*") (identifier "piVar18")))) (; ";")) (if_statement "if (piVar2 != (int *)0x0) {\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;\n    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;\n    if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }\n    if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }\n  }" ({ "{") (expression_statement "this_00 = *(id **)PTR__S_twinned_facets_004c51a8;" (assignment_expression "this_00 = *(id **)PTR__S_twinned_facets_004c51a8" (identifier "this_00") (= "=") (pointer_expression "*(id **)PTR__S_twinned_facets_004c51a8" (* "*") (cast_expression "(id **)PTR__S_twinned_facets_004c51a8" (( "(") (type_descriptor "id **" (type_identifier "id") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR__S_twinned_facets_004c51a8")))) (; ";")) (expression_statement "piVar7 = (int *)PTR__S_twinned_facets_004c51a8;" (assignment_expression "piVar7 = (int *)PTR__S_twinned_facets_004c51a8" (identifier "piVar7") (= "=") (cast_expression "(int *)PTR__S_twinned_facets_004c51a8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__S_twinned_facets_004c51a8"))) (; ";")) (if_statement "if (this_00 == (id *)0x0) {\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }\n    else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" (if "if") (parenthesized_expression "(this_00 == (id *)0x0)" (( "(") (binary_expression "this_00 == (id *)0x0" (identifier "this_00") (== "==") (cast_expression "(id *)0x0" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;\nLAB_00334b40:\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n    }" ({ "{") (labeled_statement "LAB_003348f0:\n      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" (statement_identifier "LAB_003348f0") (: ":") (if_statement "if (puVar13 != (undefined *)0x0) goto LAB_003348f8;" (if "if") (parenthesized_expression "(puVar13 != (undefined *)0x0)" (( "(") (binary_expression "puVar13 != (undefined *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_003348f8;" (goto "goto") (statement_identifier "LAB_003348f8") (; ";")))) (labeled_statement "LAB_00334b40:\n      iVar17 = piVar2[1];" (statement_identifier "LAB_00334b40") (: ":") (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" (identifier "iVar17") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" (else "else") (compound_statement "{\n      do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);\n      piVar2 = (int *)*piVar18;\n      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;\nLAB_003348f8:\n      SYNC(0);\n      iVar17 = piVar2[1];\n      piVar2[1] = iVar17 + -1;\n      SYNC(0);\n    }" ({ "{") (do_statement "do {\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      } while (this_00 != (id *)0x0);" (do "do") (compound_statement "{\n        uVar11 = locale::id::_M_id(this_00);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }\n        uVar11 = locale::id::_M_id((id *)piVar7[1]);\n        if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }\n        piVar7 = piVar7 + 2;\n        this_00 = (id *)*piVar7;\n      }" ({ "{") (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" (identifier "uVar11") (= "=") (identifier "locale")) (: ":") (: ":")) (labeled_statement "id::_M_id(this_00);" (statement_identifier "id") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_id(this_00);" (call_expression "_M_id(this_00)" (identifier "_M_id") (argument_list "(this_00)" (( "(") (identifier "this_00") () ")"))) (; ";"))) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" (if "if") (parenthesized_expression "(uVar11 == uVar1)" (( "(") (binary_expression "uVar11 == uVar1" (identifier "uVar11") (== "==") (identifier "uVar1")) () ")")) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)piVar7[1]);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }\n          break;\n        }" ({ "{") (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(this + 4)" (* "*") (cast_expression "(int *)(this + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" (identifier "iVar17") (= "=") (identifier "locale")) (: ":") (: ":")) (labeled_statement "id::_M_id((id *)piVar7[1]);" (statement_identifier "id") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" (identifier "_M_id") (argument_list "((id *)piVar7[1])" (( "(") (cast_expression "(id *)piVar7[1]" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) () ")"))) (; ";"))) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(iVar12 + iVar17 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar17 * 4)" (( "(") (binary_expression "iVar12 + iVar17 * 4" (identifier "iVar12") (+ "+") (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" (if "if") (parenthesized_expression "(*piVar2 != 0)" (( "(") (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }\n            goto LAB_003348f0;\n          }" ({ "{") (expression_statement "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);" (assignment_expression "iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" (identifier "iVar17") (= "=") (call_expression "(*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1])" (parenthesized_expression "(*(code *)PTR__M_sso_shim_004c51ac)" (( "(") (pointer_expression "*(code *)PTR__M_sso_shim_004c51ac" (* "*") (cast_expression "(code *)PTR__M_sso_shim_004c51ac" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_sso_shim_004c51ac"))) () ")")) (argument_list "(param_2,piVar7[1])" (( "(") (identifier "param_2") (, ",") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" ({ "{") (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" (else "else") (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" ({ "{") (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" (identifier "iVar12") (= "=") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" (else "else") (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" (identifier "iVar12") (= "=") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }\n            else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" (if "if") (parenthesized_expression "(iVar12 == 1)" (( "(") (binary_expression "iVar12 == 1" (identifier "iVar12") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\nLAB_00334c14:\n              piVar2 = (int *)*piVar18;\n            }" ({ "{") (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" (( "(") (pointer_expression "**(code **)(*piVar7 + 4)" (* "*") (pointer_expression "*(code **)(*piVar7 + 4)" (* "*") (cast_expression "(code **)(*piVar7 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 4)" (( "(") (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar17")) (; ";")) (labeled_statement "LAB_00334c14:\n              piVar2 = (int *)*piVar18;" (statement_identifier "LAB_00334c14") (: ":") (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar18" (* "*") (identifier "piVar18")))) (; ";"))) (} "}")) (else_clause "else {\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" (else "else") (compound_statement "{\nLAB_003348e8:\n              *piVar2 = iVar17;\n              piVar2 = (int *)*piVar18;\n            }" ({ "{") (labeled_statement "LAB_003348e8:\n              *piVar2 = iVar17;" (statement_identifier "LAB_003348e8") (: ":") (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar17")) (; ";"))) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar18" (* "*") (identifier "piVar18")))) (; ";")) (} "}")))) (goto_statement "goto LAB_003348f0;" (goto "goto") (statement_identifier "LAB_003348f0") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (ERROR "uVar11 = locale::" (assignment_expression "uVar11 = locale" (identifier "uVar11") (= "=") (identifier "locale")) (: ":") (: ":")) (labeled_statement "id::_M_id((id *)piVar7[1]);" (statement_identifier "id") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_id((id *)piVar7[1]);" (call_expression "_M_id((id *)piVar7[1])" (identifier "_M_id") (argument_list "((id *)piVar7[1])" (( "(") (cast_expression "(id *)piVar7[1]" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) () ")"))) (; ";"))) (if_statement "if (uVar11 == uVar1) {\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" (if "if") (parenthesized_expression "(uVar11 == uVar1)" (( "(") (binary_expression "uVar11 == uVar1" (identifier "uVar11") (== "==") (identifier "uVar1")) () ")")) (compound_statement "{\n          iVar12 = *(int *)(this + 4);\n          iVar17 = locale::id::_M_id((id *)*piVar7);\n          piVar2 = (int *)(iVar12 + iVar17 * 4);\n          if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }\n          break;\n        }" ({ "{") (expression_statement "iVar12 = *(int *)(this + 4);" (assignment_expression "iVar12 = *(int *)(this + 4)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(this + 4)" (* "*") (cast_expression "(int *)(this + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (ERROR "iVar17 = locale::" (assignment_expression "iVar17 = locale" (identifier "iVar17") (= "=") (identifier "locale")) (: ":") (: ":")) (labeled_statement "id::_M_id((id *)*piVar7);" (statement_identifier "id") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_id((id *)*piVar7);" (call_expression "_M_id((id *)*piVar7)" (identifier "_M_id") (argument_list "((id *)*piVar7)" (( "(") (cast_expression "(id *)*piVar7" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")"))) (; ";"))) (expression_statement "piVar2 = (int *)(iVar12 + iVar17 * 4);" (assignment_expression "piVar2 = (int *)(iVar12 + iVar17 * 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(iVar12 + iVar17 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar17 * 4)" (( "(") (binary_expression "iVar12 + iVar17 * 4" (identifier "iVar12") (+ "+") (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (*piVar2 != 0) {\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" (if "if") (parenthesized_expression "(*piVar2 != 0)" (( "(") (binary_expression "*piVar2 != 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);\n            if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }\n            piVar7 = (int *)*piVar2;\n            if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }\n            if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }\n            goto LAB_003348e8;\n          }" ({ "{") (expression_statement "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);" (assignment_expression "iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" (identifier "iVar17") (= "=") (call_expression "(*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7)" (parenthesized_expression "(*(code *)PTR__M_cow_shim_004c51b0)" (( "(") (pointer_expression "*(code *)PTR__M_cow_shim_004c51b0" (* "*") (cast_expression "(code *)PTR__M_cow_shim_004c51b0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_cow_shim_004c51b0"))) () ")")) (argument_list "(param_2,*piVar7)" (( "(") (identifier "param_2") (, ",") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) () ")")))) (; ";")) (if_statement "if (puVar13 == (undefined *)0x0) {\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }\n            else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n            }" ({ "{") (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" (else "else") (compound_statement "{\n              SYNC(0);\n              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;\n              SYNC(0);\n            }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;" (assignment_expression "*(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar17 + 4) + 1" (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "piVar7 = (int *)*piVar2;" (assignment_expression "piVar7 = (int *)*piVar2" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if (puVar13 == (undefined *)0x0) {\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }\n            else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n            }" ({ "{") (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" (identifier "iVar12") (= "=") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" (else "else") (compound_statement "{\n              SYNC(0);\n              iVar12 = piVar7[1];\n              piVar7[1] = iVar12 + -1;\n              SYNC(0);\n            }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar12 = piVar7[1];" (assignment_expression "iVar12 = piVar7[1]" (identifier "iVar12") (= "=") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7[1] = iVar12 + -1;" (assignment_expression "piVar7[1] = iVar12 + -1" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar12 == 1) {\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" (if "if") (parenthesized_expression "(iVar12 == 1)" (( "(") (binary_expression "iVar12 == 1" (identifier "iVar12") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n              (**(code **)(*piVar7 + 4))();\n              *piVar2 = iVar17;\n              goto LAB_00334c14;\n            }" ({ "{") (expression_statement "(**(code **)(*piVar7 + 4))();" (call_expression "(**(code **)(*piVar7 + 4))()" (parenthesized_expression "(**(code **)(*piVar7 + 4))" (( "(") (pointer_expression "**(code **)(*piVar7 + 4)" (* "*") (pointer_expression "*(code **)(*piVar7 + 4)" (* "*") (cast_expression "(code **)(*piVar7 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 4)" (( "(") (binary_expression "*piVar7 + 4" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*piVar2 = iVar17;" (assignment_expression "*piVar2 = iVar17" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar17")) (; ";")) (goto_statement "goto LAB_00334c14;" (goto "goto") (statement_identifier "LAB_00334c14") (; ";")) (} "}"))) (goto_statement "goto LAB_003348e8;" (goto "goto") (statement_identifier "LAB_003348e8") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar7 = piVar7 + 2;" (assignment_expression "piVar7 = piVar7 + 2" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 2" (identifier "piVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "this_00 = (id *)*piVar7;" (assignment_expression "this_00 = (id *)*piVar7" (identifier "this_00") (= "=") (cast_expression "(id *)*piVar7" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(this_00 != (id *)0x0)" (( "(") (binary_expression "this_00 != (id *)0x0" (identifier "this_00") (!= "!=") (cast_expression "(id *)0x0" (( "(") (type_descriptor "id *" (type_identifier "id") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "piVar2 = (int *)*piVar18;" (assignment_expression "piVar2 = (int *)*piVar18" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar18" (* "*") (identifier "piVar18")))) (; ";")) (if_statement "if (puVar13 == (undefined *)0x0) goto LAB_00334b40;" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00334b40;" (goto "goto") (statement_identifier "LAB_00334b40") (; ";"))) (labeled_statement "LAB_003348f8:\n      SYNC(0);" (statement_identifier "LAB_003348f8") (: ":") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";"))) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" (identifier "iVar17") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar17 == 1) {\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" (if "if") (parenthesized_expression "(iVar17 == 1)" (( "(") (binary_expression "iVar17 == 1" (identifier "iVar17") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n      (**(code **)(*piVar2 + 4))(piVar2);\n      uVar1 = *(uint *)(this + 8);\n      goto LAB_00334924;\n    }" ({ "{") (expression_statement "(**(code **)(*piVar2 + 4))(piVar2);" (call_expression "(**(code **)(*piVar2 + 4))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 4))" (( "(") (pointer_expression "**(code **)(*piVar2 + 4)" (* "*") (pointer_expression "*(code **)(*piVar2 + 4)" (* "*") (cast_expression "(code **)(*piVar2 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 4)" (( "(") (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")"))) (; ";")) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (goto_statement "goto LAB_00334924;" (goto "goto") (statement_identifier "LAB_00334924") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (labeled_statement "LAB_00334924:\n  *piVar18 = (int)param_2;" (statement_identifier "LAB_00334924") (: ":") (expression_statement "*piVar18 = (int)param_2;" (assignment_expression "*piVar18 = (int)param_2" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";"))) (if_statement "if (uVar1 != 0) {\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = 0;\n    iVar17 = *(int *)(this + 0xc);\n    do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (do_statement "do {\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    } while (uVar11 < uVar1);" (do "do") (compound_statement "{\n      piVar2 = *(int **)(iVar17 + uVar11 * 4);\n      if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }\n      uVar11 = uVar11 + 1;\n    }" ({ "{") (expression_statement "piVar2 = *(int **)(iVar17 + uVar11 * 4);" (assignment_expression "piVar2 = *(int **)(iVar17 + uVar11 * 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(iVar17 + uVar11 * 4)" (* "*") (cast_expression "(int **)(iVar17 + uVar11 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + uVar11 * 4)" (( "(") (binary_expression "iVar17 + uVar11 * 4" (identifier "iVar17") (+ "+") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (piVar2 != (int *)0x0) {\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" (if "if") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }\n        uVar1 = *(uint *)(this + 8);\n        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;\n      }" ({ "{") (if_statement "if (puVar13 == (undefined *)0x0) {\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }\n        else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" (if "if") (parenthesized_expression "(puVar13 == (undefined *)0x0)" (( "(") (binary_expression "puVar13 == (undefined *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          if (iVar17 != 1) goto LAB_00334960;\nLAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();\n          iVar17 = *(int *)(this + 0xc);\n        }" ({ "{") (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" (identifier "iVar17") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar17 != 1) goto LAB_00334960;" (if "if") (parenthesized_expression "(iVar17 != 1)" (( "(") (binary_expression "iVar17 != 1" (identifier "iVar17") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00334960;" (goto "goto") (statement_identifier "LAB_00334960") (; ";"))) (labeled_statement "LAB_003349ac:\n                    \n          (**(code **)(*piVar2 + 4))();" (statement_identifier "LAB_003349ac") (: ":") (expression_statement "(**(code **)(*piVar2 + 4))();" (call_expression "(**(code **)(*piVar2 + 4))()" (parenthesized_expression "(**(code **)(*piVar2 + 4))" (( "(") (pointer_expression "**(code **)(*piVar2 + 4)" (* "*") (pointer_expression "*(code **)(*piVar2 + 4)" (* "*") (cast_expression "(code **)(*piVar2 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 4)" (( "(") (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" (else "else") (compound_statement "{\n          SYNC(0);\n          iVar17 = piVar2[1];\n          piVar2[1] = iVar17 + -1;\n          SYNC(0);\n          if (iVar17 == 1) goto LAB_003349ac;\nLAB_00334960:\n          iVar17 = *(int *)(this + 0xc);\n        }" ({ "{") (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar17 = piVar2[1];" (assignment_expression "iVar17 = piVar2[1]" (identifier "iVar17") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar2[1] = iVar17 + -1;" (assignment_expression "piVar2[1] = iVar17 + -1" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "SYNC(0);" (call_expression "SYNC(0)" (identifier "SYNC") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (if_statement "if (iVar17 == 1) goto LAB_003349ac;" (if "if") (parenthesized_expression "(iVar17 == 1)" (( "(") (binary_expression "iVar17 == 1" (identifier "iVar17") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_003349ac;" (goto "goto") (statement_identifier "LAB_003349ac") (; ";"))) (labeled_statement "LAB_00334960:\n          iVar17 = *(int *)(this + 0xc);" (statement_identifier "LAB_00334960") (: ":") (expression_statement "iVar17 = *(int *)(this + 0xc);" (assignment_expression "iVar17 = *(int *)(this + 0xc)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "uVar1 = *(uint *)(this + 8);" (assignment_expression "uVar1 = *(uint *)(this + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 8)" (* "*") (cast_expression "(uint *)(this + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar17 + uVar11 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + uVar11 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + uVar11 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar17 + uVar11 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + uVar11 * 4)" (( "(") (binary_expression "iVar17 + uVar11 * 4" (identifier "iVar17") (+ "+") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < uVar1)" (( "(") (binary_expression "uVar11 < uVar1" (identifier "uVar11") (< "<") (identifier "uVar1")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ms_call_modifier) (ERROR (identifier) (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement))) (ERROR (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_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: (call_expression function: (identifier) arguments: (argument_list (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) 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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) 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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (ERROR (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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))))))) (ERROR (assignment_expression left: (identifier) right: (identifier))) (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: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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) (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (goto_statement label: (statement_identifier)))) (break_statement))) (ERROR (assignment_expression left: (identifier) right: (identifier))) (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: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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))))))) (ERROR (assignment_expression left: (identifier) right: (identifier))) (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))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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: (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))))))) (goto_statement label: (statement_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))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) 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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))

/* std::locale::_Impl::MASKED(std::locale::id const*, std::locale::facet const*) */

void __thiscall std::locale::_Impl::MASKED(_Impl *this,id *param_1,facet *param_2)

{
  uint uVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  uint uVar6;
  id *this_00;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  uint uVar11;
  int iVar12;
  undefined *puVar13;
  uint uVar14;
  void *pvVar15;
  void *pvVar16;
  int iVar17;
  int *piVar18;
  
  if (param_2 == (facet *)0x0) {
    return;
  }
  uVar1 = locale::id::_M_id(param_1);
  if (*(int *)(this + 8) - 1U < uVar1) {
    uVar11 = uVar1 + 4;
    pvVar16 = *(void **)(this + 4);
    if (uVar11 < 0x20000000) {
      uVar14 = uVar11 * 4;
    }
    else {
      uVar14 = 0xffffffff;
    }
    puVar3 = (undefined4 *)operator_new__(uVar14);
    uVar6 = *(uint *)(this + 8);
    if (uVar6 != 0) {
      puVar4 = *(undefined4 **)(this + 4);
      puVar8 = puVar4 + uVar6;
      puVar5 = puVar3;
      do {
        uVar9 = *puVar4;
        puVar4 = puVar4 + 1;
        *puVar5 = uVar9;
        puVar5 = puVar5 + 1;
      } while (puVar4 != puVar8);
    }
    if (uVar6 < uVar11) {
      puVar5 = puVar3 + uVar6;
      do {
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      } while (puVar3 + uVar1 + 4 != puVar5);
    }
                    /* try { // try from 00334a50 to 00334a57 has its CatchHandler @ 00334cec */
    pvVar15 = *(void **)(this + 0xc);
    puVar5 = (undefined4 *)operator_new__(uVar14);
    uVar14 = *(uint *)(this + 8);
    if (uVar14 != 0) {
      puVar8 = *(undefined4 **)(this + 0xc);
      puVar10 = puVar8 + uVar14;
      puVar4 = puVar5;
      do {
        uVar9 = *puVar8;
        puVar8 = puVar8 + 1;
        *puVar4 = uVar9;
        puVar4 = puVar4 + 1;
      } while (puVar10 != puVar8);
    }
    iVar17 = uVar1 * 4;
    if (uVar14 < uVar11) {
      puVar4 = puVar5 + uVar14;
      do {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      } while (puVar4 != puVar5 + uVar1 + 4);
    }
    *(uint *)(this + 8) = uVar11;
    *(undefined4 **)(this + 4) = puVar3;
    *(undefined4 **)(this + 0xc) = puVar5;
    if (pvVar16 != (void *)0x0) {
      operator_delete__(pvVar16);
    }
    if (pvVar15 == (void *)0x0) goto LAB_003347e0;
    operator_delete__(pvVar15);
    if (PTR___pthread_key_create_004c5aa0 != (undefined *)0x0) goto LAB_003347ec;
LAB_00334af4:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
  }
  else {
    iVar17 = uVar1 << 2;
LAB_003347e0:
    if (PTR___pthread_key_create_004c5aa0 == (undefined *)0x0) goto LAB_00334af4;
LAB_003347ec:
    puVar13 = PTR___pthread_key_create_004c5aa0;
    SYNC(0);
    *(int *)(param_2 + 4) = *(int *)(param_2 + 4) + 1;
    SYNC(0);
  }
  piVar18 = (int *)(*(int *)(this + 4) + iVar17);
  piVar2 = (int *)*piVar18;
  if (piVar2 != (int *)0x0) {
    this_00 = *(id **)PTR__S_twinned_facets_004c51a8;
    piVar7 = (int *)PTR__S_twinned_facets_004c51a8;
    if (this_00 == (id *)0x0) {
LAB_003348f0:
      if (puVar13 != (undefined *)0x0) goto LAB_003348f8;
LAB_00334b40:
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
    }
    else {
      do {
        uVar11 = locale::id::_M_id(this_00);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)piVar7[1]);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_sso_shim_004c51ac)(param_2,piVar7[1]);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c44 to 00334c4b has its CatchHandler @ 00334d1c */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
LAB_00334c14:
              piVar2 = (int *)*piVar18;
            }
            else {
LAB_003348e8:
              *piVar2 = iVar17;
              piVar2 = (int *)*piVar18;
            }
            goto LAB_003348f0;
          }
          break;
        }
        uVar11 = locale::id::_M_id((id *)piVar7[1]);
        if (uVar11 == uVar1) {
          iVar12 = *(int *)(this + 4);
          iVar17 = locale::id::_M_id((id *)*piVar7);
          piVar2 = (int *)(iVar12 + iVar17 * 4);
          if (*piVar2 != 0) {
            iVar17 = (*(code *)PTR__M_cow_shim_004c51b0)(param_2,*piVar7);
            if (puVar13 == (undefined *)0x0) {
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
            }
            else {
              SYNC(0);
              *(int *)(iVar17 + 4) = *(int *)(iVar17 + 4) + 1;
              SYNC(0);
            }
            piVar7 = (int *)*piVar2;
            if (puVar13 == (undefined *)0x0) {
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
            }
            else {
              SYNC(0);
              iVar12 = piVar7[1];
              piVar7[1] = iVar12 + -1;
              SYNC(0);
            }
            if (iVar12 == 1) {
                    /* try { // try from 00334c08 to 00334c0f has its CatchHandler @ 00334c74 */
              (**(code **)(*piVar7 + 4))();
              *piVar2 = iVar17;
              goto LAB_00334c14;
            }
            goto LAB_003348e8;
          }
          break;
        }
        piVar7 = piVar7 + 2;
        this_00 = (id *)*piVar7;
      } while (this_00 != (id *)0x0);
      piVar2 = (int *)*piVar18;
      if (puVar13 == (undefined *)0x0) goto LAB_00334b40;
LAB_003348f8:
      SYNC(0);
      iVar17 = piVar2[1];
      piVar2[1] = iVar17 + -1;
      SYNC(0);
    }
    if (iVar17 == 1) {
                    /* try { // try from 00334b60 to 00334b67 has its CatchHandler @ 00334c9c */
      (**(code **)(*piVar2 + 4))(piVar2);
      uVar1 = *(uint *)(this + 8);
      goto LAB_00334924;
    }
  }
  uVar1 = *(uint *)(this + 8);
LAB_00334924:
  *piVar18 = (int)param_2;
  if (uVar1 != 0) {
    uVar11 = 0;
    iVar17 = *(int *)(this + 0xc);
    do {
      piVar2 = *(int **)(iVar17 + uVar11 * 4);
      if (piVar2 != (int *)0x0) {
        if (puVar13 == (undefined *)0x0) {
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          if (iVar17 != 1) goto LAB_00334960;
LAB_003349ac:
                    /* try { // try from 003349b4 to 003349bb has its CatchHandler @ 00334cc4 */
          (**(code **)(*piVar2 + 4))();
          iVar17 = *(int *)(this + 0xc);
        }
        else {
          SYNC(0);
          iVar17 = piVar2[1];
          piVar2[1] = iVar17 + -1;
          SYNC(0);
          if (iVar17 == 1) goto LAB_003349ac;
LAB_00334960:
          iVar17 = *(int *)(this + 0xc);
        }
        uVar1 = *(uint *)(this + 8);
        *(undefined4 *)(iVar17 + uVar11 * 4) = 0;
      }
      uVar11 = uVar11 + 1;
    } while (uVar11 < uVar1);
  }
  return;
}

