
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void gather_cref(Cref_inputs * this, Objects * objects, Cref_table *
   table) */

void __thiscall gold::Cref_inputs::gather_cref(Cref_inputs *this,Objects *objects,Cref_table *table)

{
  size_t *psVar1;
  Symbol *pSVar2;
  iterator __position;
  Object *pOVar3;
  bool bVar4;
  int *piVar5;
  _Rb_tree_node_base *p_Var6;
  Symbol *s1;
  _Rb_tree_node_base *p_Var7;
  _Base_ptr p_Var8;
  size_t __n;
  iterator __position_00;
  _Rb_tree_node_base *p_Var9;
  _Base_ptr p_Var10;
  _Rb_tree_header *p_Var11;
  Object **local_2c;
  _Rb_tree_color *local_20;
  
  p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header;
  local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.
             _M_start;
  if (local_2c !=
      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish
     ) {
    do {
      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);
      if ((piVar5 != (int *)0x0) &&
         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {
LAB_001690d8:
        do {
          pSVar2 = (Symbol *)*local_20;
          if (pSVar2 != (Symbol *)0x0) {
            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);
            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
            p_Var6[1]._M_parent = (_Base_ptr)0x0;
            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;
            s1 = pSVar2;
            p_Var9 = &p_Var11->_M_header;
            if (p_Var7 == (_Rb_tree_node_base *)0x0) {
LAB_00169151:
              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {
                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);
                goto LAB_00169172;
              }
LAB_00169208:
              bVar4 = true;
              if (p_Var11 != (_Rb_tree_header *)p_Var9) {
                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */
                bVar4 = Cref_table_compare::operator()
                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,
                                   (Symbol *)p_Var9[1]._M_color);
              }
              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);
              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;
              *psVar1 = *psVar1 + 1;
              p_Var8 = (_Base_ptr)operator_new(0xc);
              p_Var8->_M_color = _S_red;
              p_Var8->_M_parent = (_Base_ptr)0x0;
              p_Var8->_M_left = (_Base_ptr)0x0;
              p_Var6[1]._M_parent = p_Var8;
            }
            else {
              while( true ) {
                p_Var9 = p_Var7;
                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */
                bVar4 = Cref_table_compare::operator()
                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);
                if (bVar4) {
                  p_Var7 = p_Var9->_M_left;
                }
                else {
                  p_Var7 = p_Var9->_M_right;
                }
                if (p_Var7 == (_Base_ptr)0x0) break;
                s1 = (Symbol *)p_Var6[1]._M_color;
              }
              p_Var7 = p_Var9;
              if (bVar4) goto LAB_00169151;
LAB_00169172:
              bVar4 = Cref_table_compare::operator()
                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,
                                 (Symbol *)p_Var6[1]._M_color);
              if (bVar4) {
                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;
                p_Var7 = (_Rb_tree_node_base *)0x0;
              }
              operator_delete(p_Var6);
              p_Var6 = p_Var7;
            }
            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {
              if ((pSVar2->field_0x2b & 0x20) == 0) {
                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);
                bVar4 = !bVar4;
              }
              else {
                bVar4 = (pSVar2->u2_).shndx != 0;
              }
              p_Var8 = p_Var6[1]._M_parent;
              __position_00._M_current = (Object **)p_Var8->_M_parent;
              p_Var10 = p_Var8->_M_left;
              if (bVar4) {
                __position._M_current =
                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)
                      &p_Var8->_M_color)->_M_impl)._M_start;
                if (p_Var10 == (_Base_ptr)__position_00._M_current) {
                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::
                  _M_realloc_insert<gold::Object*_const&>
                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,
                             __position,local_2c);
                  local_20 = local_20 + 1;
                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;
                }
                else {
                  pOVar3 = *local_2c;
                  if (__position._M_current == __position_00._M_current) {
                    *__position._M_current = pOVar3;
                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent
                    ;
                    local_20 = local_20 + 1;
                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;
                  }
                  else {
                    ((_Base_ptr)__position_00._M_current)->_M_color =
                         (_Rb_tree_color)
                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;
                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent
                    ;
                    if (__position._M_current !=
                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)
                    {
                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -
                            (int)__position._M_current;
                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,
                              __n);
                    }
                    local_20 = local_20 + 1;
                    *__position._M_current = pOVar3;
                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;
                  }
                }
                goto LAB_001690d8;
              }
            }
            else {
              p_Var8 = p_Var6[1]._M_parent;
              __position_00._M_current = (Object **)p_Var8->_M_parent;
              p_Var10 = p_Var8->_M_left;
            }
            if ((_Base_ptr)__position_00._M_current == p_Var10) {
              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::
              _M_realloc_insert<gold::Object*_const&>
                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,
                         __position_00,local_2c);
              local_20 = local_20 + 1;
              if ((_Rb_tree_color *)piVar5[1] == local_20) break;
              goto LAB_001690d8;
            }
            *__position_00._M_current = *local_2c;
            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);
          }
          local_20 = local_20 + 1;
        } while ((_Rb_tree_color *)piVar5[1] != local_20);
      }
      local_2c = local_2c + 1;
    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.
             _M_finish != local_2c);
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00169070(undefined4 param_1,int *param_2,int param_3)

{
  int iVar1;
  int *__src;
  char cVar2;
  undefined1 uVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  size_t __n;
  int *piVar9;
  int iVar10;
  int *piVar11;
  int iVar12;
  byte bVar13;
  int *local_2c;
  int *local_20;
  
  iVar12 = param_3 + 4;
  local_2c = (int *)*param_2;
  if (local_2c != (int *)param_2[1]) {
    do {
      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);
      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {
LAB_001690d8:
        do {
          iVar1 = *local_20;
          if (iVar1 != 0) {
            iVar5 = FUN_001aa8c0(0x18);
            iVar7 = *(int *)(param_3 + 8);
            *(undefined4 *)(iVar5 + 0x14) = 0;
            *(int *)(iVar5 + 0x10) = iVar1;
            iVar6 = iVar1;
            iVar10 = iVar12;
            if (iVar7 == 0) {
LAB_00169151:
              if (*(int *)(param_3 + 0xc) != iVar10) {
                iVar7 = FUN_001adab0(iVar10);
                goto LAB_00169172;
              }
LAB_00169208:
              uVar3 = 1;
              if (iVar12 != iVar10) {
                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */
                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),
                                     *(undefined4 *)(iVar10 + 0x10));
              }
              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);
              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;
              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);
              *puVar8 = 0;
              puVar8[1] = 0;
              puVar8[2] = 0;
              *(undefined4 **)(iVar5 + 0x14) = puVar8;
            }
            else {
              while( true ) {
                iVar10 = iVar7;
                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */
                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));
                if (cVar2 == '\0') {
                  iVar7 = *(int *)(iVar10 + 0xc);
                }
                else {
                  iVar7 = *(int *)(iVar10 + 8);
                }
                if (iVar7 == 0) break;
                iVar6 = *(int *)(iVar5 + 0x10);
              }
              iVar7 = iVar10;
              if (cVar2 != '\0') goto LAB_00169151;
LAB_00169172:
              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),
                                   *(undefined4 *)(iVar5 + 0x10));
              if (cVar2 != '\0') {
                if (iVar10 != 0) goto LAB_00169208;
                iVar7 = 0;
              }
              FUN_001ac470(iVar5);
              iVar5 = iVar7;
            }
            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {
              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {
                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));
                bVar13 = bVar13 ^ 1;
              }
              else {
                bVar13 = *(int *)(iVar1 + 0xc) != 0;
              }
              puVar8 = *(undefined4 **)(iVar5 + 0x14);
              piVar9 = (int *)puVar8[1];
              piVar11 = (int *)puVar8[2];
              if (bVar13 != 0) {
                __src = (int *)*puVar8;
                if (piVar11 == piVar9) {
                  FUN_0011fd60(puVar8,__src,local_2c);
                  local_20 = local_20 + 1;
                  if ((int *)piVar4[1] == local_20) break;
                }
                else {
                  iVar1 = *local_2c;
                  if (__src == piVar9) {
                    *__src = iVar1;
                    puVar8[1] = piVar9 + 1;
                    local_20 = local_20 + 1;
                    if ((int *)piVar4[1] == local_20) break;
                  }
                  else {
                    *piVar9 = piVar9[-1];
                    puVar8[1] = piVar9 + 1;
                    if (__src != piVar9 + -1) {
                      __n = (int)(piVar9 + -1) - (int)__src;
                      memmove((void *)((int)piVar9 - __n),__src,__n);
                    }
                    local_20 = local_20 + 1;
                    *__src = iVar1;
                    if ((int *)piVar4[1] == local_20) break;
                  }
                }
                goto LAB_001690d8;
              }
            }
            else {
              puVar8 = *(undefined4 **)(iVar5 + 0x14);
              piVar9 = (int *)puVar8[1];
              piVar11 = (int *)puVar8[2];
            }
            if (piVar9 == piVar11) {
              FUN_0011fd60(puVar8,piVar9,local_2c);
              local_20 = local_20 + 1;
              if ((int *)piVar4[1] == local_20) break;
              goto LAB_001690d8;
            }
            *piVar9 = *local_2c;
            puVar8[1] = piVar9 + 1;
          }
          local_20 = local_20 + 1;
        } while ((int *)piVar4[1] != local_20);
      }
      local_2c = local_2c + 1;
    } while ((int *)param_2[1] != local_2c);
  }
  return;
}


CALL 0x00058c42
ADD EAX,0x1d5f8b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EDI,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x24],EAX
MOV EAX,dword ptr [EBP + 0xc]
ADD EDI,0x4
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x30],EDI
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x28],EAX
CMP EAX,dword ptr [EDI + 0x4]
JZ 0x001691f7
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [EBP + -0x28]
SUB ESP,0xc
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x74]
MOV dword ptr [EBP + -0x2c],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001691e4
MOV EDI,dword ptr [EBP + -0x2c]
MOV EAX,dword ptr [EDI]
CMP EAX,dword ptr [EDI + 0x4]
JZ 0x001691e4
MOV dword ptr [EBP + -0x1c],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + -0x1c]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x20],EAX
TEST EAX,EAX
JZ 0x001691d1
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH 0x18
CALL 0x001aa8c0
MOV ECX,dword ptr [EBP + 0x10]
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [EBP + -0x20]
MOV ESI,dword ptr [ECX + 0x8]
MOV dword ptr [EDI + 0x14],0x0
MOV dword ptr [EDI + 0x10],EAX
TEST ESI,ESI
JNZ 0x0016912c
JMP 0x00169340
MOV EDX,dword ptr [ESI + 0x8]
TEST EDX,EDX
JZ 0x00169149
MOV EAX,dword ptr [EDI + 0x10]
MOV ESI,EDX
SUB ESP,0x4
PUSH dword ptr [ESI + 0x10]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
CALL 0x00168de0
ADD ESP,0x10
TEST AL,AL
JNZ 0x00169120
MOV EDX,dword ptr [ESI + 0xc]
TEST EDX,EDX
JNZ 0x00169127
TEST AL,AL
JZ 0x00169260
MOV EAX,dword ptr [EBP + 0x10]
MOV EBX,ESI
CMP dword ptr [EAX + 0xc],ESI
JZ 0x00169208
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH ESI
CALL 0x001adab0
MOV EBX,ESI
ADD ESP,0x10
MOV ESI,EAX
SUB ESP,0x4
PUSH dword ptr [EDI + 0x10]
PUSH dword ptr [ESI + 0x10]
PUSH dword ptr [EBP + 0x10]
CALL 0x00168de0
ADD ESP,0x10
TEST AL,AL
JNZ 0x00169200
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH EDI
MOV EDI,ESI
CALL 0x001ac470
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x20]
TEST byte ptr [EAX + 0x2a],0x7
JNZ 0x001691b2
MOV EBX,dword ptr [EBP + -0x28]
MOV EAX,dword ptr [EAX + 0x8]
CMP dword ptr [EBX],EAX
JZ 0x001692a0
MOV ECX,dword ptr [EDI + 0x14]
MOV EDX,dword ptr [ECX + 0x4]
MOV EBX,dword ptr [ECX + 0x8]
CMP EDX,EBX
JZ 0x00169270
MOV EAX,dword ptr [EBP + -0x28]
ADD EDX,0x4
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDX + -0x4],EAX
MOV dword ptr [ECX + 0x4],EDX
MOV ECX,dword ptr [EBP + -0x2c]
ADD dword ptr [EBP + -0x1c],0x4
MOV EAX,dword ptr [EBP + -0x1c]
CMP dword ptr [ECX + 0x4],EAX
JNZ 0x001690d8
MOV EDI,dword ptr [EBP + 0xc]
ADD dword ptr [EBP + -0x28],0x4
MOV EAX,dword ptr [EBP + -0x28]
CMP dword ptr [EDI + 0x4],EAX
JNZ 0x001690a8
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EBX,EBX
JZ 0x001693ac
MOV EAX,0x1
CMP dword ptr [EBP + -0x30],EBX
JNZ 0x00169320
PUSH dword ptr [EBP + -0x30]
MOV ESI,dword ptr [EBP + -0x24]
PUSH EBX
PUSH EDI
MOV EBX,ESI
PUSH EAX
CALL 0x001adb90
MOV EAX,dword ptr [EBP + 0x10]
ADD dword ptr [EAX + 0x14],0x1
MOV dword ptr [ESP],0xc
CALL 0x001aa8c0
ADD ESP,0x10
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EDI + 0x14],EAX
JMP 0x0016919b
MOV EBX,ESI
JMP 0x00169172
SUB ESP,0x4
PUSH dword ptr [EBP + -0x28]
PUSH EDX
PUSH ECX
CALL 0x0011fd60
MOV ECX,dword ptr [EBP + -0x2c]
ADD dword ptr [EBP + -0x1c],0x4
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x1c]
CMP dword ptr [ECX + 0x4],EAX
JNZ 0x001690d8
JMP 0x001691e4
MOV EBX,dword ptr [EBP + -0x20]
MOV EAX,dword ptr [EBX + 0xc]
TEST byte ptr [EBX + 0x2b],0x20
JZ 0x00169350
TEST EAX,EAX
SETNZ AL
MOV ECX,dword ptr [EDI + 0x14]
MOV EDX,dword ptr [ECX + 0x4]
MOV EBX,dword ptr [ECX + 0x8]
TEST AL,AL
JZ 0x001691bb
MOV ESI,dword ptr [ECX]
CMP EBX,EDX
JZ 0x00169384
MOV EAX,dword ptr [EBP + -0x28]
MOV EDI,dword ptr [EAX]
LEA EAX,[EDX + 0x4]
CMP ESI,EDX
JZ 0x00169367
MOV EBX,dword ptr [EDX + -0x4]
MOV dword ptr [EDX],EBX
MOV dword ptr [ECX + 0x4],EAX
LEA EAX,[EDX + -0x4]
CMP ESI,EAX
JZ 0x00169304
SUB EAX,ESI
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x24]
SUB EDX,EAX
PUSH EAX
PUSH ESI
PUSH EDX
CALL 0x000288a0
ADD ESP,0x10
MOV ECX,dword ptr [EBP + -0x2c]
ADD dword ptr [EBP + -0x1c],0x4
MOV dword ptr [ESI],EDI
MOV EAX,dword ptr [EBP + -0x1c]
CMP dword ptr [ECX + 0x4],EAX
JNZ 0x001690d8
JMP 0x001691e4
SUB ESP,0x4
PUSH dword ptr [EBX + 0x10]
PUSH dword ptr [EDI + 0x10]
PUSH dword ptr [EBP + 0x10]
CALL 0x00168de0
ADD ESP,0x10
MOVZX EAX,AL
JMP 0x00169216
MOV ESI,dword ptr [EBP + -0x30]
JMP 0x00169151
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x24]
PUSH EAX
CALL 0x0014e7c0
ADD ESP,0x10
XOR EAX,0x1
JMP 0x001692b5
MOV dword ptr [ESI],EDI
MOV dword ptr [ECX + 0x4],EAX
MOV ECX,dword ptr [EBP + -0x2c]
ADD dword ptr [EBP + -0x1c],0x4
MOV EAX,dword ptr [EBP + -0x1c]
CMP dword ptr [ECX + 0x4],EAX
JNZ 0x001690d8
JMP 0x001691e4
SUB ESP,0x4
PUSH dword ptr [EBP + -0x28]
PUSH ESI
PUSH ECX
CALL 0x0011fd60
MOV ECX,dword ptr [EBP + -0x2c]
ADD dword ptr [EBP + -0x1c],0x4
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x1c]
CMP dword ptr [ECX + 0x4],EAX
JNZ 0x001690d8
JMP 0x001691e4
XOR ESI,ESI
JMP 0x0016918a
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00169070(undefined4 param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00169070(undefined4 param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00169070(undefined4 param_1,int *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "iVar12 = param_3 + 4;" (assignment_expression "iVar12 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "local_2c = (int *)*param_2;" (assignment_expression "local_2c = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" if (parenthesized_expression "(local_2c != (int *)param_2[1])" ( (binary_expression "local_2c != (int *)param_2[1]" identifier != (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" { (do_statement "do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);" do (compound_statement "{\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    }" { (expression_statement "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" identifier = (cast_expression "(int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" (parenthesized_expression "(**(code **)(*(int *)*local_2c + 0x74))" ( (pointer_expression "**(code **)(*(int *)*local_2c + 0x74)" * (pointer_expression "*(code **)(*(int *)*local_2c + 0x74)" * (cast_expression "(code **)(*(int *)*local_2c + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*local_2c + 0x74)" ( (binary_expression "*(int *)*local_2c + 0x74" (pointer_expression "*(int *)*local_2c" * (cast_expression "(int *)*local_2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier))) + number_literal) ))))) )) (argument_list "((int *)*local_2c)" ( (cast_expression "(int *)*local_2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier)) ))))) ;) (if_statement "if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" if (parenthesized_expression "((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]))" ( (binary_expression "(piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" ( (comma_expression "local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]" (assignment_expression "local_20 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) , (binary_expression "local_20 != (int *)piVar4[1]" identifier != (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])))) ))) )) (compound_statement "{\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" { (labeled_statement "LAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" statement_identifier : (do_statement "do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" do (compound_statement "{\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        }" { (expression_statement "iVar1 = *local_20;" (assignment_expression "iVar1 = *local_20" identifier = (pointer_expression "*local_20" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" { (expression_statement "iVar5 = FUN_001aa8c0(0x18);" (assignment_expression "iVar5 = FUN_001aa8c0(0x18)" identifier = (call_expression "FUN_001aa8c0(0x18)" identifier (argument_list "(0x18)" ( number_literal )))) ;) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = 0" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar5 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar5 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }" { (labeled_statement "LAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" statement_identifier : (if_statement "if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" if (parenthesized_expression "(*(int *)(param_3 + 0xc) != iVar10)" ( (binary_expression "*(int *)(param_3 + 0xc) != iVar10" (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" { (expression_statement "iVar7 = FUN_001adab0(iVar10);" (assignment_expression "iVar7 = FUN_001adab0(iVar10)" identifier = (call_expression "FUN_001adab0(iVar10)" identifier (argument_list "(iVar10)" ( identifier )))) ;) (goto_statement "goto LAB_00169172;" goto statement_identifier ;) }))) (labeled_statement "LAB_00169208:\n              uVar3 = 1;" statement_identifier : (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;)) (if_statement "if (iVar12 != iVar10) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" if (parenthesized_expression "(iVar12 != iVar10)" ( (binary_expression "iVar12 != iVar10" identifier != identifier) )) (compound_statement "{\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" { comment (expression_statement "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));" (assignment_expression "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" identifier (argument_list "(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) )))) ;) })) (expression_statement "FUN_001adb90(uVar3,iVar5,iVar10,iVar12);" (call_expression "FUN_001adb90(uVar3,iVar5,iVar10,iVar12)" identifier (argument_list "(uVar3,iVar5,iVar10,iVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;" (assignment_expression "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0xc);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)(iVar5 + 0x14) = puVar8;" (assignment_expression "*(undefined4 **)(iVar5 + 0x14) = puVar8" (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" else (compound_statement "{\n              while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" { (while_statement "while( true ) {\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar10 = iVar7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" { (expression_statement "iVar10 = iVar7;" (assignment_expression "iVar10 = iVar7" identifier = identifier) ;) comment (expression_statement "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" identifier (argument_list "(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) )))) ;) (if_statement "if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }" { (expression_statement "iVar7 = *(int *)(iVar10 + 0xc);" (assignment_expression "iVar7 = *(int *)(iVar10 + 0xc)" identifier = (pointer_expression "*(int *)(iVar10 + 0xc)" * (cast_expression "(int *)(iVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xc)" ( (binary_expression "iVar10 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" else (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" { (expression_statement "iVar7 = *(int *)(iVar10 + 8);" (assignment_expression "iVar7 = *(int *)(iVar10 + 8)" identifier = (pointer_expression "*(int *)(iVar10 + 8)" * (cast_expression "(int *)(iVar10 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 8)" ( (binary_expression "iVar10 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "iVar7 = iVar10;" (assignment_expression "iVar7 = iVar10" identifier = identifier) ;) (if_statement "if (cVar2 != '\0') goto LAB_00169151;" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00169151;" goto statement_identifier ;)) (labeled_statement "LAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" statement_identifier : (expression_statement "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" identifier (argument_list "(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) )))) ;)) (if_statement "if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" { (if_statement "if (iVar10 != 0) goto LAB_00169208;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00169208;" goto statement_identifier ;)) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (expression_statement "FUN_001ac470(iVar5);" (call_expression "FUN_001ac470(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" identifier = identifier) ;) }))) (if_statement "if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" if (parenthesized_expression "(((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8)))" ( (binary_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))" (parenthesized_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar1 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar1 + 0x2a)" * (cast_expression "(byte *)(iVar1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2a)" ( (binary_expression "iVar1 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*local_2c == *(int *)(iVar1 + 8))" ( (binary_expression "*local_2c == *(int *)(iVar1 + 8)" (pointer_expression "*local_2c" * identifier) == (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ))) )) (compound_statement "{\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }" { (if_statement "if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x2b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(iVar1 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar1 + 0x2b)" * (cast_expression "(byte *)(iVar1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2b)" ( (binary_expression "iVar1 + 0x2b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }" { (expression_statement "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));" (assignment_expression "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc))" identifier = (call_expression "FUN_0014e7c0(*(int *)(iVar1 + 0xc))" identifier (argument_list "(*(int *)(iVar1 + 0xc))" ( (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "bVar13 = bVar13 ^ 1;" (assignment_expression "bVar13 = bVar13 ^ 1" identifier = (binary_expression "bVar13 ^ 1" identifier ^ number_literal)) ;) }) (else_clause "else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" else (compound_statement "{\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" { (expression_statement "bVar13 = *(int *)(iVar1 + 0xc) != 0;" (assignment_expression "bVar13 = *(int *)(iVar1 + 0xc) != 0" identifier = (binary_expression "*(int *)(iVar1 + 0xc) != 0" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != number_literal)) ;) }))) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" identifier = (cast_expression "(int *)puVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" identifier = (cast_expression "(int *)puVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" if (parenthesized_expression "(bVar13 != 0)" ( (binary_expression "bVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" { (expression_statement "__src = (int *)*puVar8;" (assignment_expression "__src = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" if (parenthesized_expression "(piVar11 == piVar9)" ( (binary_expression "piVar11 == piVar9" identifier == identifier) )) (compound_statement "{\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }" { (expression_statement "FUN_0011fd60(puVar8,__src,local_2c);" (call_expression "FUN_0011fd60(puVar8,__src,local_2c)" identifier (argument_list "(puVar8,__src,local_2c)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" else (compound_statement "{\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" { (expression_statement "iVar1 = *local_2c;" (assignment_expression "iVar1 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (if_statement "if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" if (parenthesized_expression "(__src == piVar9)" ( (binary_expression "__src == piVar9" identifier == identifier) )) (compound_statement "{\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" { (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" else (compound_statement "{\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" { (expression_statement "*piVar9 = piVar9[-1];" (assignment_expression "*piVar9 = piVar9[-1]" (pointer_expression "*piVar9" * identifier) = (subscript_expression "piVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (if_statement "if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" if (parenthesized_expression "(__src != piVar9 + -1)" ( (binary_expression "__src != piVar9 + -1" identifier != (binary_expression "piVar9 + -1" identifier + number_literal)) )) (compound_statement "{\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" { (expression_statement "__n = (int)(piVar9 + -1) - (int)__src;" (assignment_expression "__n = (int)(piVar9 + -1) - (int)__src" identifier = (binary_expression "(int)(piVar9 + -1) - (int)__src" (cast_expression "(int)(piVar9 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar9 + -1)" ( (binary_expression "piVar9 + -1" identifier + number_literal) ))) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memmove((void *)((int)piVar9 - __n),__src,__n);" (call_expression "memmove((void *)((int)piVar9 - __n),__src,__n)" identifier (argument_list "((void *)((int)piVar9 - __n),__src,__n)" ( (cast_expression "(void *)((int)piVar9 - __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - __n)" ( (binary_expression "(int)piVar9 - __n" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) , identifier , identifier ))) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) }))) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) }) (else_clause "else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" else (compound_statement "{\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" { (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" identifier = (cast_expression "(int *)puVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" identifier = (cast_expression "(int *)puVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" if (parenthesized_expression "(piVar9 == piVar11)" ( (binary_expression "piVar9 == piVar11" identifier == identifier) )) (compound_statement "{\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" { (expression_statement "FUN_0011fd60(puVar8,piVar9,local_2c);" (call_expression "FUN_0011fd60(puVar8,piVar9,local_2c)" identifier (argument_list "(puVar8,piVar9,local_2c)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) (expression_statement "*piVar9 = *local_2c;" (assignment_expression "*piVar9 = *local_2c" (pointer_expression "*piVar9" * identifier) = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)piVar4[1] != local_20)" ( (binary_expression "(int *)piVar4[1] != local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) != identifier) )) ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)param_2[1] != local_2c)" ( (binary_expression "(int *)param_2[1] != local_2c" (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void gather_cref(Cref_inputs * this, Objects * objects, Cref_table *\n   table) */\n\nvoid __thiscall gold::Cref_inputs::gather_cref(Cref_inputs *this,Objects *objects,Cref_table *table)\n\n{\n  size_t *psVar1;\n  Symbol *pSVar2;\n  iterator __position;\n  Object *pOVar3;\n  bool bVar4;\n  int *piVar5;\n  _Rb_tree_node_base *p_Var6;\n  Symbol *s1;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  size_t __n;\n  iterator __position_00;\n  _Rb_tree_node_base *p_Var9;\n  _Base_ptr p_Var10;\n  _Rb_tree_header *p_Var11;\n  Object **local_2c;\n  _Rb_tree_color *local_20;\n  \n  p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header;\n  local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start;\n  if (local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish\n     ) {\n    do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Cref_inputs::gather_cref(Cref_inputs *this,Objects *objects,Cref_table *table)\n\n{\n  size_t *psVar1;\n  Symbol *pSVar2;\n  iterator __position;\n  Object *pOVar3;\n  bool bVar4;\n  int *piVar5;\n  _Rb_tree_node_base *p_Var6;\n  Symbol *s1;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  size_t __n;\n  iterator __position_00;\n  _Rb_tree_node_base *p_Var9;\n  _Base_ptr p_Var10;\n  _Rb_tree_header *p_Var11;\n  Object **local_2c;\n  _Rb_tree_color *local_20;\n  \n  p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header;\n  local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start;\n  if (local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish\n     ) {\n    do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Cref_inputs::" identifier : : identifier : :) (function_declarator "gather_cref(Cref_inputs *this,Objects *objects,Cref_table *table)" identifier (parameter_list "(Cref_inputs *this,Objects *objects,Cref_table *table)" ( (parameter_declaration "Cref_inputs *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Objects *objects" type_identifier (pointer_declarator "*objects" * identifier)) , (parameter_declaration "Cref_table *table" type_identifier (pointer_declarator "*table" * identifier)) ))) (compound_statement "{\n  size_t *psVar1;\n  Symbol *pSVar2;\n  iterator __position;\n  Object *pOVar3;\n  bool bVar4;\n  int *piVar5;\n  _Rb_tree_node_base *p_Var6;\n  Symbol *s1;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  size_t __n;\n  iterator __position_00;\n  _Rb_tree_node_base *p_Var9;\n  _Base_ptr p_Var10;\n  _Rb_tree_header *p_Var11;\n  Object **local_2c;\n  _Rb_tree_color *local_20;\n  \n  p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header;\n  local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start;\n  if (local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish\n     ) {\n    do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);\n  }\n  return;\n}" { (declaration "size_t *psVar1;" primitive_type (pointer_declarator "*psVar1" * identifier) ;) (declaration "Symbol *pSVar2;" type_identifier (pointer_declarator "*pSVar2" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Object *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "Symbol *s1;" type_identifier (pointer_declarator "*s1" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "_Base_ptr p_Var8;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "iterator __position_00;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "_Base_ptr p_Var10;" type_identifier identifier ;) (declaration "_Rb_tree_header *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "Object **local_2c;" type_identifier (pointer_declarator "**local_2c" * (pointer_declarator "*local_2c" * identifier)) ;) (declaration "_Rb_tree_color *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var11 = &(table->_M_t)._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(table->_M_t)._M_impl.super__Rb_tree_header" & (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(table->_M_t)._M_impl" (parenthesized_expression "(table->_M_t)" ( (field_expression "table->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start;" (assignment_expression "local_2c = (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start" identifier = (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_start" (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl" (parenthesized_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)" ( (ERROR "objects->super__Vector_base<gold::Object*,_std::allocator<gold::" (comma_expression "objects->super__Vector_base<gold::Object*,_std" (binary_expression "objects->super__Vector_base<gold::Object*" (binary_expression "objects->super__Vector_base<gold" (field_expression "objects->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Object" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Object*>_>" (binary_expression "Object*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish\n     ) {\n    do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);\n  }" if (parenthesized_expression "(local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish\n     )" ( (binary_expression "local_2c !=\n      (objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish" identifier != (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl._M_finish" (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl" (parenthesized_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)" ( (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>" (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "objects->super__Vector_base<gold::Object*,_std" (binary_expression "objects->super__Vector_base<gold" (field_expression "objects->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);\n  }" { (do_statement "do {\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c);" do (compound_statement "{\n      piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);\n      if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    }" { (expression_statement "piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c);" (assignment_expression "piVar5 = (int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c)" identifier = (cast_expression "(int *)(*(*local_2c)->_vptr_Object[0x1d])(*local_2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(*local_2c)->_vptr_Object[0x1d])(*local_2c)" (parenthesized_expression "(*(*local_2c)->_vptr_Object[0x1d])" ( (pointer_expression "*(*local_2c)->_vptr_Object[0x1d]" * (subscript_expression "(*local_2c)->_vptr_Object[0x1d]" (field_expression "(*local_2c)->_vptr_Object" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) -> field_identifier) [ number_literal ])) )) (argument_list "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])) {\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }" if (parenthesized_expression "((piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1]))" ( (binary_expression "(piVar5 != (int *)0x0) &&\n         (local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])" (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1])" ( (comma_expression "local_20 = (_Rb_tree_color *)*piVar5, local_20 != (_Rb_tree_color *)piVar5[1]" (assignment_expression "local_20 = (_Rb_tree_color *)*piVar5" identifier = (cast_expression "(_Rb_tree_color *)*piVar5" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) , (binary_expression "local_20 != (_Rb_tree_color *)piVar5[1]" identifier != (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])))) ))) )) (compound_statement "{\nLAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);\n      }" { (labeled_statement "LAB_001690d8:\n        do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);" statement_identifier : (do_statement "do {\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        } while ((_Rb_tree_color *)piVar5[1] != local_20);" do (compound_statement "{\n          pSVar2 = (Symbol *)*local_20;\n          if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }\n          local_20 = local_20 + 1;\n        }" { (expression_statement "pSVar2 = (Symbol *)*local_20;" (assignment_expression "pSVar2 = (Symbol *)*local_20" identifier = (cast_expression "(Symbol *)*local_20" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_20" * identifier))) ;) (if_statement "if (pSVar2 != (Symbol *)0x0) {\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }" if (parenthesized_expression "(pSVar2 != (Symbol *)0x0)" ( (binary_expression "pSVar2 != (Symbol *)0x0" identifier != (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);\n            p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;\n            p_Var6[1]._M_parent = (_Base_ptr)0x0;\n            p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;\n            s1 = pSVar2;\n            p_Var9 = &p_Var11->_M_header;\n            if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }\n            if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }\n            if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *__position_00._M_current = *local_2c;\n            p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);\n          }" { (expression_statement "p_Var6 = (_Rb_tree_node_base *)operator_new(0x18);" (assignment_expression "p_Var6 = (_Rb_tree_node_base *)operator_new(0x18)" identifier = (cast_expression "(_Rb_tree_node_base *)operator_new(0x18)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var7 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_header" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(table->_M_t)._M_impl" (parenthesized_expression "(table->_M_t)" ( (field_expression "table->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var6[1]._M_parent = (_Base_ptr)0x0;" (assignment_expression "p_Var6[1]._M_parent = (_Base_ptr)0x0" (field_expression "p_Var6[1]._M_parent" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var6[1]._M_color = (_Rb_tree_color)pSVar2;" (assignment_expression "p_Var6[1]._M_color = (_Rb_tree_color)pSVar2" (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Rb_tree_color)pSVar2" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "s1 = pSVar2;" (assignment_expression "s1 = pSVar2" identifier = identifier) ;) (expression_statement "p_Var9 = &p_Var11->_M_header;" (assignment_expression "p_Var9 = &p_Var11->_M_header" identifier = (pointer_expression "&p_Var11->_M_header" & (field_expression "p_Var11->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }\n            else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }" if (parenthesized_expression "(p_Var7 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var7 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              bVar4 = true;\n              if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }\n              std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);\n              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;\n              *psVar1 = *psVar1 + 1;\n              p_Var8 = (_Base_ptr)operator_new(0xc);\n              p_Var8->_M_color = _S_red;\n              p_Var8->_M_parent = (_Base_ptr)0x0;\n              p_Var8->_M_left = (_Base_ptr)0x0;\n              p_Var6[1]._M_parent = p_Var8;\n            }" { (labeled_statement "LAB_00169151:\n              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }" statement_identifier : (if_statement "if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9) {\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }" if (parenthesized_expression "((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9)" ( (binary_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != p_Var9" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_header" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(table->_M_t)._M_impl" (parenthesized_expression "(table->_M_t)" ( (field_expression "table->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n                p_Var7 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var9);\n                goto LAB_00169172;\n              }" { (ERROR "p_Var7 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var7 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "_Rb_tree_decrement(p_Var9);" (call_expression "_Rb_tree_decrement(p_Var9)" identifier (argument_list "(p_Var9)" ( identifier ))) ;) (goto_statement "goto LAB_00169172;" goto statement_identifier ;) }))) (labeled_statement "LAB_00169208:\n              bVar4 = true;" statement_identifier : (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;)) (if_statement "if (p_Var11 != (_Rb_tree_header *)p_Var9) {\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }" if (parenthesized_expression "(p_Var11 != (_Rb_tree_header *)p_Var9)" ( (binary_expression "p_Var11 != (_Rb_tree_header *)p_Var9" identifier != (cast_expression "(_Rb_tree_header *)p_Var9" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);\n              }" { comment (ERROR "bVar4 = Cref_table_compare::" (assignment_expression "bVar4 = Cref_table_compare" identifier = identifier) : :) (expression_statement "operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color);" (call_expression "operator()\n                                  ((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "((Cref_table_compare *)table,(Symbol *)p_Var6[1]._M_color,\n                                   (Symbol *)p_Var9[1]._M_color)" ( (cast_expression "(Cref_table_compare *)table" ( (type_descriptor "Cref_table_compare *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Symbol *)p_Var6[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) , (cast_expression "(Symbol *)p_Var9[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var9[1]._M_color" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)) ))) ;) })) (labeled_statement "std::_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);" statement_identifier : (ERROR ":" :) (expression_statement "_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar4,p_Var6,p_Var9,&p_Var11->_M_header)" identifier (argument_list "(bVar4,p_Var6,p_Var9,&p_Var11->_M_header)" ( identifier , identifier , identifier , (pointer_expression "&p_Var11->_M_header" & (field_expression "p_Var11->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;" (assignment_expression "psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count" & (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(table->_M_t)._M_impl.super__Rb_tree_header" (field_expression "(table->_M_t)._M_impl" (parenthesized_expression "(table->_M_t)" ( (field_expression "table->_M_t" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (expression_statement "p_Var8 = (_Base_ptr)operator_new(0xc);" (assignment_expression "p_Var8 = (_Base_ptr)operator_new(0xc)" identifier = (cast_expression "(_Base_ptr)operator_new(0xc)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "p_Var8->_M_color = _S_red;" (assignment_expression "p_Var8->_M_color = _S_red" (field_expression "p_Var8->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var8->_M_parent = (_Base_ptr)0x0;" (assignment_expression "p_Var8->_M_parent = (_Base_ptr)0x0" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var8->_M_left = (_Base_ptr)0x0;" (assignment_expression "p_Var8->_M_left = (_Base_ptr)0x0" (field_expression "p_Var8->_M_left" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var6[1]._M_parent = p_Var8;" (assignment_expression "p_Var6[1]._M_parent = p_Var8" (field_expression "p_Var6[1]._M_parent" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) }) (else_clause "else {\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }" else (compound_statement "{\n              while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }\n              p_Var7 = p_Var9;\n              if (bVar4) goto LAB_00169151;\nLAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);\n              if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }\n              operator_delete(p_Var6);\n              p_Var6 = p_Var7;\n            }" { (while_statement "while( true ) {\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                p_Var9 = p_Var7;\n                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */\n                bVar4 = Cref_table_compare::operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);\n                if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }\n                if (p_Var7 == (_Base_ptr)0x0) break;\n                s1 = (Symbol *)p_Var6[1]._M_color;\n              }" { (expression_statement "p_Var9 = p_Var7;" (assignment_expression "p_Var9 = p_Var7" identifier = identifier) ;) comment (ERROR "bVar4 = Cref_table_compare::" (assignment_expression "bVar4 = Cref_table_compare" identifier = identifier) : :) (expression_statement "operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color);" (call_expression "operator()\n                                  ((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "((Cref_table_compare *)table,s1,(Symbol *)p_Var9[1]._M_color)" ( (cast_expression "(Cref_table_compare *)table" ( (type_descriptor "Cref_table_compare *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(Symbol *)p_Var9[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var9[1]._M_color" (subscript_expression "p_Var9[1]" identifier [ number_literal ]) . field_identifier)) ))) ;) (if_statement "if (bVar4) {\n                  p_Var7 = p_Var9->_M_left;\n                }\n                else {\n                  p_Var7 = p_Var9->_M_right;\n                }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n                  p_Var7 = p_Var9->_M_left;\n                }" { (expression_statement "p_Var7 = p_Var9->_M_left;" (assignment_expression "p_Var7 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else {\n                  p_Var7 = p_Var9->_M_right;\n                }" else (compound_statement "{\n                  p_Var7 = p_Var9->_M_right;\n                }" { (expression_statement "p_Var7 = p_Var9->_M_right;" (assignment_expression "p_Var7 = p_Var9->_M_right" identifier = (field_expression "p_Var9->_M_right" identifier -> field_identifier)) ;) }))) (if_statement "if (p_Var7 == (_Base_ptr)0x0) break;" if (parenthesized_expression "(p_Var7 == (_Base_ptr)0x0)" ( (binary_expression "p_Var7 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "s1 = (Symbol *)p_Var6[1]._M_color;" (assignment_expression "s1 = (Symbol *)p_Var6[1]._M_color" identifier = (cast_expression "(Symbol *)p_Var6[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier))) ;) })) (expression_statement "p_Var7 = p_Var9;" (assignment_expression "p_Var7 = p_Var9" identifier = identifier) ;) (if_statement "if (bVar4) goto LAB_00169151;" if (parenthesized_expression "(bVar4)" ( identifier )) (goto_statement "goto LAB_00169151;" goto statement_identifier ;)) (labeled_statement "LAB_00169172:\n              bVar4 = Cref_table_compare::operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);" statement_identifier : (ERROR "bVar4 = Cref_table_compare::" (assignment_expression "bVar4 = Cref_table_compare" identifier = identifier) : :) (expression_statement "operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color);" (call_expression "operator()\n                                ((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "((Cref_table_compare *)table,(Symbol *)p_Var7[1]._M_color,\n                                 (Symbol *)p_Var6[1]._M_color)" ( (cast_expression "(Cref_table_compare *)table" ( (type_descriptor "Cref_table_compare *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Symbol *)p_Var7[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var7[1]._M_color" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier)) , (cast_expression "(Symbol *)p_Var6[1]._M_color" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) ))) ;)) (if_statement "if (bVar4) {\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n                if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;\n                p_Var7 = (_Rb_tree_node_base *)0x0;\n              }" { (if_statement "if (p_Var9 != (_Rb_tree_node_base *)0x0) goto LAB_00169208;" if (parenthesized_expression "(p_Var9 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var9 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00169208;" goto statement_identifier ;)) (expression_statement "p_Var7 = (_Rb_tree_node_base *)0x0;" (assignment_expression "p_Var7 = (_Rb_tree_node_base *)0x0" identifier = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "operator_delete(p_Var6);" (call_expression "operator_delete(p_Var6)" identifier (argument_list "(p_Var6)" ( identifier ))) ;) (expression_statement "p_Var6 = p_Var7;" (assignment_expression "p_Var6 = p_Var7" identifier = identifier) ;) }))) (if_statement "if (((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)) {\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }" if (parenthesized_expression "(((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object))" ( (binary_expression "((pSVar2->field_0x2a & 7) == 0) && (*local_2c == (pSVar2->u1_).object)" (parenthesized_expression "((pSVar2->field_0x2a & 7) == 0)" ( (binary_expression "(pSVar2->field_0x2a & 7) == 0" (parenthesized_expression "(pSVar2->field_0x2a & 7)" ( (binary_expression "pSVar2->field_0x2a & 7" (field_expression "pSVar2->field_0x2a" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*local_2c == (pSVar2->u1_).object)" ( (binary_expression "*local_2c == (pSVar2->u1_).object" (pointer_expression "*local_2c" * identifier) == (field_expression "(pSVar2->u1_).object" (parenthesized_expression "(pSVar2->u1_)" ( (field_expression "pSVar2->u1_" identifier -> field_identifier) )) . field_identifier)) ))) )) (compound_statement "{\n              if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n              if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }" { (if_statement "if ((pSVar2->field_0x2b & 0x20) == 0) {\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }\n              else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }" if (parenthesized_expression "((pSVar2->field_0x2b & 0x20) == 0)" ( (binary_expression "(pSVar2->field_0x2b & 0x20) == 0" (parenthesized_expression "(pSVar2->field_0x2b & 0x20)" ( (binary_expression "pSVar2->field_0x2b & 0x20" (field_expression "pSVar2->field_0x2b" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar4 = Symbol::is_common_shndx((pSVar2->u2_).shndx);\n                bVar4 = !bVar4;\n              }" { (ERROR "bVar4 = Symbol::" (assignment_expression "bVar4 = Symbol" identifier = identifier) : :) (expression_statement "is_common_shndx((pSVar2->u2_).shndx);" (call_expression "is_common_shndx((pSVar2->u2_).shndx)" identifier (argument_list "((pSVar2->u2_).shndx)" ( (field_expression "(pSVar2->u2_).shndx" (parenthesized_expression "(pSVar2->u2_)" ( (field_expression "pSVar2->u2_" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "bVar4 = !bVar4;" (assignment_expression "bVar4 = !bVar4" identifier = (unary_expression "!bVar4" ! identifier)) ;) }) (else_clause "else {\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }" else (compound_statement "{\n                bVar4 = (pSVar2->u2_).shndx != 0;\n              }" { (expression_statement "bVar4 = (pSVar2->u2_).shndx != 0;" (assignment_expression "bVar4 = (pSVar2->u2_).shndx != 0" identifier = (binary_expression "(pSVar2->u2_).shndx != 0" (field_expression "(pSVar2->u2_).shndx" (parenthesized_expression "(pSVar2->u2_)" ( (field_expression "pSVar2->u2_" identifier -> field_identifier) )) . field_identifier) != number_literal)) ;) }))) (expression_statement "p_Var8 = p_Var6[1]._M_parent;" (assignment_expression "p_Var8 = p_Var6[1]._M_parent" identifier = (field_expression "p_Var6[1]._M_parent" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__position_00._M_current = (Object **)p_Var8->_M_parent;" (assignment_expression "__position_00._M_current = (Object **)p_Var8->_M_parent" (field_expression "__position_00._M_current" identifier . field_identifier) = (cast_expression "(Object **)p_Var8->_M_parent" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "p_Var8->_M_parent" identifier -> field_identifier))) ;) (expression_statement "p_Var10 = p_Var8->_M_left;" (assignment_expression "p_Var10 = p_Var8->_M_left" identifier = (field_expression "p_Var8->_M_left" identifier -> field_identifier)) ;) (if_statement "if (bVar4) {\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n                __position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;\n                if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" { (expression_statement "__position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start;" (assignment_expression "__position._M_current =\n                     (((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)._M_start" (parenthesized_expression "(((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl)" ( (field_expression "((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)->_M_impl" (parenthesized_expression "((_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color)" ( (binary_expression "(_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)\n                      &p_Var8->_M_color" (parenthesized_expression "(_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *)" ( (binary_expression "_Vector_base<gold::Object*,_std::allocator<gold::Object*>_> *" (binary_expression "_Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "_Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "_Vector_base<gold::Object*,_std" (binary_expression "_Vector_base<gold" identifier < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "*" * identifier)) )) & (field_expression "p_Var8->_M_color" identifier -> field_identifier)) )) -> field_identifier) )) . field_identifier)) ;) (if_statement "if (p_Var10 == (_Base_ptr)__position_00._M_current) {\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }\n                else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }" if (parenthesized_expression "(p_Var10 == (_Base_ptr)__position_00._M_current)" ( (binary_expression "p_Var10 == (_Base_ptr)__position_00._M_current" identifier == (cast_expression "(_Base_ptr)__position_00._M_current" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__position_00._M_current" identifier . field_identifier))) )) (compound_statement "{\n                  std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                }" { (ERROR "std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n                  _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Object*,_std" identifier (ERROR "::vector<gold::Object*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Object*>_>::\n                  _M_realloc_insert<gold" (binary_expression "Object*>_>::\n                  _M_realloc_insert" (binary_expression "Object*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c);" (binary_expression "Object*_const&>\n                            ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c)" (binary_expression "Object*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c)" ( (parenthesized_expression "(vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c)" ( (comma_expression "vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                             __position,local_2c" (binary_expression "vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8" (binary_expression "vector<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "vector<gold::Object*,_std::allocator<gold" (binary_expression "vector<gold::Object*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "*)p_Var8" * (ERROR ")" )) identifier)) , (comma_expression "__position,local_2c" identifier , identifier)) )) ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((_Rb_tree_color *)piVar5[1] == local_20) break;" if (parenthesized_expression "((_Rb_tree_color *)piVar5[1] == local_20)" ( (binary_expression "(_Rb_tree_color *)piVar5[1] == local_20" (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }" else (compound_statement "{\n                  pOVar3 = *local_2c;\n                  if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                }" { (expression_statement "pOVar3 = *local_2c;" (assignment_expression "pOVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (if_statement "if (__position._M_current == __position_00._M_current) {\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }\n                  else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }" if (parenthesized_expression "(__position._M_current == __position_00._M_current)" ( (binary_expression "__position._M_current == __position_00._M_current" (field_expression "__position._M_current" identifier . field_identifier) == (field_expression "__position_00._M_current" identifier . field_identifier)) )) (compound_statement "{\n                    *__position._M_current = pOVar3;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    local_20 = local_20 + 1;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }" { (expression_statement "*__position._M_current = pOVar3;" (assignment_expression "*__position._M_current = pOVar3" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;" (assignment_expression "p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = (binary_expression "(_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent" (parenthesized_expression "(_Base_ptr)" ( identifier )) & (field_expression "((_Base_ptr)__position_00._M_current)->_M_parent" (parenthesized_expression "((_Base_ptr)__position_00._M_current)" ( (cast_expression "(_Base_ptr)__position_00._M_current" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__position_00._M_current" identifier . field_identifier)) )) -> field_identifier))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((_Rb_tree_color *)piVar5[1] == local_20) break;" if (parenthesized_expression "((_Rb_tree_color *)piVar5[1] == local_20)" ( (binary_expression "(_Rb_tree_color *)piVar5[1] == local_20" (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }" else (compound_statement "{\n                    ((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;\n                    p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;\n                    if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__position._M_current = pOVar3;\n                    if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n                  }" { (expression_statement "((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right;" (assignment_expression "((_Base_ptr)__position_00._M_current)->_M_color =\n                         (_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" (field_expression "((_Base_ptr)__position_00._M_current)->_M_color" (parenthesized_expression "((_Base_ptr)__position_00._M_current)" ( (cast_expression "(_Base_ptr)__position_00._M_current" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__position_00._M_current" identifier . field_identifier)) )) -> field_identifier) = (field_expression "(_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" (call_expression "(_Rb_tree_color)\n                         ((_Base_ptr)((int)__position_00._M_current + -0x10))" (parenthesized_expression "(_Rb_tree_color)" ( identifier )) (argument_list "((_Base_ptr)((int)__position_00._M_current + -0x10))" ( (call_expression "(_Base_ptr)((int)__position_00._M_current + -0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)__position_00._M_current + -0x10)" ( (binary_expression "(int)__position_00._M_current + -0x10" (cast_expression "(int)__position_00._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position_00._M_current" identifier . field_identifier)) + number_literal) ))) ))) -> field_identifier)) ;) (expression_statement "p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent\n                    ;" (assignment_expression "p_Var8->_M_parent = (_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = (binary_expression "(_Base_ptr)&((_Base_ptr)__position_00._M_current)->_M_parent" (parenthesized_expression "(_Base_ptr)" ( identifier )) & (field_expression "((_Base_ptr)__position_00._M_current)->_M_parent" (parenthesized_expression "((_Base_ptr)__position_00._M_current)" ( (cast_expression "(_Base_ptr)__position_00._M_current" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__position_00._M_current" identifier . field_identifier)) )) -> field_identifier))) ;) (if_statement "if (__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)\n                    {\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }" if (parenthesized_expression "(__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right)" ( (binary_expression "__position._M_current !=\n                        (Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" (field_expression "__position._M_current" identifier . field_identifier) != (cast_expression "(Object **)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" & (field_expression "((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" (parenthesized_expression "((_Base_ptr)((int)__position_00._M_current + -0x10))" ( (call_expression "(_Base_ptr)((int)__position_00._M_current + -0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)__position_00._M_current + -0x10)" ( (binary_expression "(int)__position_00._M_current + -0x10" (cast_expression "(int)__position_00._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position_00._M_current" identifier . field_identifier)) + number_literal) ))) )) -> field_identifier)))) )) (compound_statement "{\n                      __n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;\n                      memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);\n                    }" { (expression_statement "__n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current;" (assignment_expression "__n = (int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current" identifier = (binary_expression "(int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right -\n                            (int)__position._M_current" (cast_expression "(int)&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" & (field_expression "((_Base_ptr)((int)__position_00._M_current + -0x10))->_M_right" (parenthesized_expression "((_Base_ptr)((int)__position_00._M_current + -0x10))" ( (call_expression "(_Base_ptr)((int)__position_00._M_current + -0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)__position_00._M_current + -0x10)" ( (binary_expression "(int)__position_00._M_current + -0x10" (cast_expression "(int)__position_00._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position_00._M_current" identifier . field_identifier)) + number_literal) ))) )) -> field_identifier))) - (cast_expression "(int)__position._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position._M_current" identifier . field_identifier)))) ;) (expression_statement "memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n);" (call_expression "memmove((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n)" identifier (argument_list "((void *)((int)__position_00._M_current - __n),__position._M_current,\n                              __n)" ( (cast_expression "(void *)((int)__position_00._M_current - __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__position_00._M_current - __n)" ( (binary_expression "(int)__position_00._M_current - __n" (cast_expression "(int)__position_00._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__position_00._M_current" identifier . field_identifier)) - identifier) ))) , (field_expression "__position._M_current" identifier . field_identifier) , identifier ))) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "*__position._M_current = pOVar3;" (assignment_expression "*__position._M_current = pOVar3" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (if_statement "if ((_Rb_tree_color *)piVar5[1] == local_20) break;" if (parenthesized_expression "((_Rb_tree_color *)piVar5[1] == local_20)" ( (binary_expression "(_Rb_tree_color *)piVar5[1] == local_20" (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) }))) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) }) (else_clause "else {\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }" else (compound_statement "{\n              p_Var8 = p_Var6[1]._M_parent;\n              __position_00._M_current = (Object **)p_Var8->_M_parent;\n              p_Var10 = p_Var8->_M_left;\n            }" { (expression_statement "p_Var8 = p_Var6[1]._M_parent;" (assignment_expression "p_Var8 = p_Var6[1]._M_parent" identifier = (field_expression "p_Var6[1]._M_parent" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "__position_00._M_current = (Object **)p_Var8->_M_parent;" (assignment_expression "__position_00._M_current = (Object **)p_Var8->_M_parent" (field_expression "__position_00._M_current" identifier . field_identifier) = (cast_expression "(Object **)p_Var8->_M_parent" ( (type_descriptor "Object **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "p_Var8->_M_parent" identifier -> field_identifier))) ;) (expression_statement "p_Var10 = p_Var8->_M_left;" (assignment_expression "p_Var10 = p_Var8->_M_left" identifier = (field_expression "p_Var8->_M_left" identifier -> field_identifier)) ;) }))) (if_statement "if ((_Base_ptr)__position_00._M_current == p_Var10) {\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }" if (parenthesized_expression "((_Base_ptr)__position_00._M_current == p_Var10)" ( (binary_expression "(_Base_ptr)__position_00._M_current == p_Var10" (cast_expression "(_Base_ptr)__position_00._M_current" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__position_00._M_current" identifier . field_identifier)) == identifier) )) (compound_statement "{\n              std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);\n              local_20 = local_20 + 1;\n              if ((_Rb_tree_color *)piVar5[1] == local_20) break;\n              goto LAB_001690d8;\n            }" { (ERROR "std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n              _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Object*,_std" identifier (ERROR "::vector<gold::Object*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Object*>_>::\n              _M_realloc_insert<gold" (binary_expression "Object*>_>::\n              _M_realloc_insert" (binary_expression "Object*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c);" (binary_expression "Object*_const&>\n                        ((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c)" (binary_expression "Object*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "((vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c)" ( (parenthesized_expression "(vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c)" ( (comma_expression "vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8,\n                         __position_00,local_2c" (binary_expression "vector<gold::Object*,_std::allocator<gold::Object*>_> *)p_Var8" (binary_expression "vector<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "vector<gold::Object*,_std::allocator<gold" (binary_expression "vector<gold::Object*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "*)p_Var8" * (ERROR ")" )) identifier)) , (comma_expression "__position_00,local_2c" identifier , identifier)) )) ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((_Rb_tree_color *)piVar5[1] == local_20) break;" if (parenthesized_expression "((_Rb_tree_color *)piVar5[1] == local_20)" ( (binary_expression "(_Rb_tree_color *)piVar5[1] == local_20" (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) (expression_statement "*__position_00._M_current = *local_2c;" (assignment_expression "*__position_00._M_current = *local_2c" (pointer_expression "*__position_00._M_current" * (field_expression "__position_00._M_current" identifier . field_identifier)) = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1);" (assignment_expression "p_Var8->_M_parent = (_Base_ptr)(__position_00._M_current + 1)" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = (call_expression "(_Base_ptr)(__position_00._M_current + 1)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__position_00._M_current + 1)" ( (binary_expression "__position_00._M_current + 1" (field_expression "__position_00._M_current" identifier . field_identifier) + number_literal) )))) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((_Rb_tree_color *)piVar5[1] != local_20)" ( (binary_expression "(_Rb_tree_color *)piVar5[1] != local_20" (cast_expression "(_Rb_tree_color *)piVar5[1]" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[1]" identifier [ number_literal ])) != identifier) )) ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c)" ( (binary_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish != local_2c" (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl.\n             _M_finish" (field_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)._M_impl" (parenthesized_expression "(objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>)" ( (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>" (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "objects->super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "objects->super__Vector_base<gold::Object*,_std" (binary_expression "objects->super__Vector_base<gold" (field_expression "objects->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00169070(undefined4 param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00169070(undefined4 param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00169070(undefined4 param_1,int *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined1 uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "iVar12 = param_3 + 4;" (assignment_expression "iVar12 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "local_2c = (int *)*param_2;" (assignment_expression "local_2c = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" if (parenthesized_expression "(local_2c != (int *)param_2[1])" ( (binary_expression "local_2c != (int *)param_2[1]" identifier != (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" { (do_statement "do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);" do (compound_statement "{\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    }" { (expression_statement "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" identifier = (cast_expression "(int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" (parenthesized_expression "(**(code **)(*(int *)*local_2c + 0x74))" ( (pointer_expression "**(code **)(*(int *)*local_2c + 0x74)" * (pointer_expression "*(code **)(*(int *)*local_2c + 0x74)" * (cast_expression "(code **)(*(int *)*local_2c + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)*local_2c + 0x74)" ( (binary_expression "*(int *)*local_2c + 0x74" (pointer_expression "*(int *)*local_2c" * (cast_expression "(int *)*local_2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier))) + number_literal) ))))) )) (argument_list "((int *)*local_2c)" ( (cast_expression "(int *)*local_2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier)) ))))) ;) (if_statement "if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" if (parenthesized_expression "((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]))" ( (binary_expression "(piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" ( (comma_expression "local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]" (assignment_expression "local_20 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) , (binary_expression "local_20 != (int *)piVar4[1]" identifier != (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])))) ))) )) (compound_statement "{\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" { (labeled_statement "LAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" statement_identifier : (do_statement "do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" do (compound_statement "{\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        }" { (expression_statement "iVar1 = *local_20;" (assignment_expression "iVar1 = *local_20" identifier = (pointer_expression "*local_20" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" { (expression_statement "iVar5 = FUN_001aa8c0(0x18);" (assignment_expression "iVar5 = FUN_001aa8c0(0x18)" identifier = (call_expression "FUN_001aa8c0(0x18)" identifier (argument_list "(0x18)" ( number_literal )))) ;) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" identifier = (pointer_expression "*(int *)(param_3 + 8)" * (cast_expression "(int *)(param_3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8)" ( (binary_expression "param_3 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = 0" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar5 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar5 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }" { (labeled_statement "LAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" statement_identifier : (if_statement "if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" if (parenthesized_expression "(*(int *)(param_3 + 0xc) != iVar10)" ( (binary_expression "*(int *)(param_3 + 0xc) != iVar10" (pointer_expression "*(int *)(param_3 + 0xc)" * (cast_expression "(int *)(param_3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" { (expression_statement "iVar7 = FUN_001adab0(iVar10);" (assignment_expression "iVar7 = FUN_001adab0(iVar10)" identifier = (call_expression "FUN_001adab0(iVar10)" identifier (argument_list "(iVar10)" ( identifier )))) ;) (goto_statement "goto LAB_00169172;" goto statement_identifier ;) }))) (labeled_statement "LAB_00169208:\n              uVar3 = 1;" statement_identifier : (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;)) (if_statement "if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" if (parenthesized_expression "(iVar12 != iVar10)" ( (binary_expression "iVar12 != iVar10" identifier != identifier) )) (compound_statement "{\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" { (expression_statement "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));" (assignment_expression "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" identifier (argument_list "(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) )))) ;) })) (expression_statement "FUN_001adb90(uVar3,iVar5,iVar10,iVar12);" (call_expression "FUN_001adb90(uVar3,iVar5,iVar10,iVar12)" identifier (argument_list "(uVar3,iVar5,iVar10,iVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;" (assignment_expression "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" * (cast_expression "(int *)(param_3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0xc);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)(iVar5 + 0x14) = puVar8;" (assignment_expression "*(undefined4 **)(iVar5 + 0x14) = puVar8" (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" else (compound_statement "{\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" { (while_statement "while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" { (expression_statement "iVar10 = iVar7;" (assignment_expression "iVar10 = iVar7" identifier = identifier) ;) (expression_statement "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" identifier (argument_list "(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) )))) ;) (if_statement "if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }" { (expression_statement "iVar7 = *(int *)(iVar10 + 0xc);" (assignment_expression "iVar7 = *(int *)(iVar10 + 0xc)" identifier = (pointer_expression "*(int *)(iVar10 + 0xc)" * (cast_expression "(int *)(iVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xc)" ( (binary_expression "iVar10 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" else (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" { (expression_statement "iVar7 = *(int *)(iVar10 + 8);" (assignment_expression "iVar7 = *(int *)(iVar10 + 8)" identifier = (pointer_expression "*(int *)(iVar10 + 8)" * (cast_expression "(int *)(iVar10 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 8)" ( (binary_expression "iVar10 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "iVar7 = iVar10;" (assignment_expression "iVar7 = iVar10" identifier = identifier) ;) (if_statement "if (cVar2 != '\0') goto LAB_00169151;" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00169151;" goto statement_identifier ;)) (labeled_statement "LAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" statement_identifier : (expression_statement "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" identifier = (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" identifier (argument_list "(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) )))) ;)) (if_statement "if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" { (if_statement "if (iVar10 != 0) goto LAB_00169208;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00169208;" goto statement_identifier ;)) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (expression_statement "FUN_001ac470(iVar5);" (call_expression "FUN_001ac470(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" identifier = identifier) ;) }))) (if_statement "if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" if (parenthesized_expression "(((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8)))" ( (binary_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))" (parenthesized_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2a) & 7)" ( (binary_expression "*(byte *)(iVar1 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar1 + 0x2a)" * (cast_expression "(byte *)(iVar1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2a)" ( (binary_expression "iVar1 + 0x2a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*local_2c == *(int *)(iVar1 + 8))" ( (binary_expression "*local_2c == *(int *)(iVar1 + 8)" (pointer_expression "*local_2c" * identifier) == (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ))) )) (compound_statement "{\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }" { (if_statement "if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x2b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2b) & 0x20)" ( (binary_expression "*(byte *)(iVar1 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar1 + 0x2b)" * (cast_expression "(byte *)(iVar1 + 0x2b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x2b)" ( (binary_expression "iVar1 + 0x2b" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }" { (expression_statement "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));" (assignment_expression "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc))" identifier = (call_expression "FUN_0014e7c0(*(int *)(iVar1 + 0xc))" identifier (argument_list "(*(int *)(iVar1 + 0xc))" ( (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "bVar13 = bVar13 ^ 1;" (assignment_expression "bVar13 = bVar13 ^ 1" identifier = (binary_expression "bVar13 ^ 1" identifier ^ number_literal)) ;) }) (else_clause "else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" else (compound_statement "{\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" { (expression_statement "bVar13 = *(int *)(iVar1 + 0xc) != 0;" (assignment_expression "bVar13 = *(int *)(iVar1 + 0xc) != 0" identifier = (binary_expression "*(int *)(iVar1 + 0xc) != 0" (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != number_literal)) ;) }))) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" identifier = (cast_expression "(int *)puVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" identifier = (cast_expression "(int *)puVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" if (parenthesized_expression "(bVar13 != 0)" ( (binary_expression "bVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" { (expression_statement "__src = (int *)*puVar8;" (assignment_expression "__src = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" if (parenthesized_expression "(piVar11 == piVar9)" ( (binary_expression "piVar11 == piVar9" identifier == identifier) )) (compound_statement "{\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }" { (expression_statement "FUN_0011fd60(puVar8,__src,local_2c);" (call_expression "FUN_0011fd60(puVar8,__src,local_2c)" identifier (argument_list "(puVar8,__src,local_2c)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" else (compound_statement "{\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" { (expression_statement "iVar1 = *local_2c;" (assignment_expression "iVar1 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (if_statement "if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" if (parenthesized_expression "(__src == piVar9)" ( (binary_expression "__src == piVar9" identifier == identifier) )) (compound_statement "{\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" { (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" else (compound_statement "{\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" { (expression_statement "*piVar9 = piVar9[-1];" (assignment_expression "*piVar9 = piVar9[-1]" (pointer_expression "*piVar9" * identifier) = (subscript_expression "piVar9[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (if_statement "if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" if (parenthesized_expression "(__src != piVar9 + -1)" ( (binary_expression "__src != piVar9 + -1" identifier != (binary_expression "piVar9 + -1" identifier + number_literal)) )) (compound_statement "{\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" { (expression_statement "__n = (int)(piVar9 + -1) - (int)__src;" (assignment_expression "__n = (int)(piVar9 + -1) - (int)__src" identifier = (binary_expression "(int)(piVar9 + -1) - (int)__src" (cast_expression "(int)(piVar9 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar9 + -1)" ( (binary_expression "piVar9 + -1" identifier + number_literal) ))) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memmove((void *)((int)piVar9 - __n),__src,__n);" (call_expression "memmove((void *)((int)piVar9 - __n),__src,__n)" identifier (argument_list "((void *)((int)piVar9 - __n),__src,__n)" ( (cast_expression "(void *)((int)piVar9 - __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - __n)" ( (binary_expression "(int)piVar9 - __n" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) , identifier , identifier ))) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" * identifier) = identifier) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) }))) }))) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) }) (else_clause "else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" else (compound_statement "{\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" { (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" * (cast_expression "(undefined4 **)(iVar5 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" identifier = (cast_expression "(int *)puVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" identifier = (cast_expression "(int *)puVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" if (parenthesized_expression "(piVar9 == piVar11)" ( (binary_expression "piVar9 == piVar11" identifier == identifier) )) (compound_statement "{\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" { (expression_statement "FUN_0011fd60(puVar8,piVar9,local_2c);" (call_expression "FUN_0011fd60(puVar8,piVar9,local_2c)" identifier (argument_list "(puVar8,piVar9,local_2c)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (if_statement "if ((int *)piVar4[1] == local_20) break;" if (parenthesized_expression "((int *)piVar4[1] == local_20)" ( (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001690d8;" goto statement_identifier ;) })) (expression_statement "*piVar9 = *local_2c;" (assignment_expression "*piVar9 = *local_2c" (pointer_expression "*piVar9" * identifier) = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)piVar4[1] != local_20)" ( (binary_expression "(int *)piVar4[1] != local_20" (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ])) != identifier) )) ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)param_2[1] != local_2c)" ( (binary_expression "(int *)param_2[1] != local_2c" (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , 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)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 == (char_literal ' escape_sequence ')) )) (compound_statement { (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 (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) )) (break_statement break ;)) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != 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) ))))) ;) (expression_statement (assignment_expression IDENT = (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_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 != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) }))) }))) (goto_statement goto statement_identifier ;) })) }) (else_clause else (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 = (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00169070(undefined4 param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00169070(undefined4 param_1,int *param_2,int param_3)" (identifier "FUN_00169070") (parameter_list "(undefined4 param_1,int *param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *__src;\n  char cVar2;\n  undefined1 uVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  size_t __n;\n  int *piVar9;\n  int iVar10;\n  int *piVar11;\n  int iVar12;\n  byte bVar13;\n  int *local_2c;\n  int *local_20;\n  \n  iVar12 = param_3 + 4;\n  local_2c = (int *)*param_2;\n  if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *__src;" (primitive_type "int") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined1 uVar3;" (type_identifier "undefined1") (identifier "uVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "int *local_2c;" (primitive_type "int") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "iVar12 = param_3 + 4;" (assignment_expression "iVar12 = param_3 + 4" (identifier "iVar12") (= "=") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_2c = (int *)*param_2;" (assignment_expression "local_2c = (int *)*param_2" (identifier "local_2c") (= "=") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (local_2c != (int *)param_2[1]) {\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" (if "if") (parenthesized_expression "(local_2c != (int *)param_2[1])" (( "(") (binary_expression "local_2c != (int *)param_2[1]" (identifier "local_2c") (!= "!=") (cast_expression "(int *)param_2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);\n  }" ({ "{") (do_statement "do {\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    } while ((int *)param_2[1] != local_2c);" (do "do") (compound_statement "{\n      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);\n      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }\n      local_2c = local_2c + 1;\n    }" ({ "{") (expression_statement "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" (identifier "piVar4") (= "=") (cast_expression "(int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c)" (parenthesized_expression "(**(code **)(*(int *)*local_2c + 0x74))" (( "(") (pointer_expression "**(code **)(*(int *)*local_2c + 0x74)" (* "*") (pointer_expression "*(code **)(*(int *)*local_2c + 0x74)" (* "*") (cast_expression "(code **)(*(int *)*local_2c + 0x74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)*local_2c + 0x74)" (( "(") (binary_expression "*(int *)*local_2c + 0x74" (pointer_expression "*(int *)*local_2c" (* "*") (cast_expression "(int *)*local_2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")))) (+ "+") (number_literal "0x74")) () ")"))))) () ")")) (argument_list "((int *)*local_2c)" (( "(") (cast_expression "(int *)*local_2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_2c" (* "*") (identifier "local_2c"))) () ")"))))) (; ";")) (if_statement "if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" (if "if") (parenthesized_expression "((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]))" (( "(") (binary_expression "(piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])" (( "(") (comma_expression "local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1]" (assignment_expression "local_20 = (int *)*piVar4" (identifier "local_20") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (, ",") (binary_expression "local_20 != (int *)piVar4[1]" (identifier "local_20") (!= "!=") (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))))) () ")"))) () ")")) (compound_statement "{\nLAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);\n      }" ({ "{") (labeled_statement "LAB_001690d8:\n        do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" (statement_identifier "LAB_001690d8") (: ":") (do_statement "do {\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        } while ((int *)piVar4[1] != local_20);" (do "do") (compound_statement "{\n          iVar1 = *local_20;\n          if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }\n          local_20 = local_20 + 1;\n        }" ({ "{") (expression_statement "iVar1 = *local_20;" (assignment_expression "iVar1 = *local_20" (identifier "iVar1") (= "=") (pointer_expression "*local_20" (* "*") (identifier "local_20"))) (; ";")) (if_statement "if (iVar1 != 0) {\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = FUN_001aa8c0(0x18);\n            iVar7 = *(int *)(param_3 + 8);\n            *(undefined4 *)(iVar5 + 0x14) = 0;\n            *(int *)(iVar5 + 0x10) = iVar1;\n            iVar6 = iVar1;\n            iVar10 = iVar12;\n            if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }\n            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }\n            if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }\n            *piVar9 = *local_2c;\n            puVar8[1] = piVar9 + 1;\n          }" ({ "{") (expression_statement "iVar5 = FUN_001aa8c0(0x18);" (assignment_expression "iVar5 = FUN_001aa8c0(0x18)" (identifier "iVar5") (= "=") (call_expression "FUN_001aa8c0(0x18)" (identifier "FUN_001aa8c0") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(param_3 + 8);" (assignment_expression "iVar7 = *(int *)(param_3 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_3 + 8)" (* "*") (cast_expression "(int *)(param_3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8)" (( "(") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = 0" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar5 + 0x10) = iVar1;" (assignment_expression "*(int *)(iVar5 + 0x10) = iVar1" (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" (identifier "iVar6") (= "=") (identifier "iVar1")) (; ";")) (expression_statement "iVar10 = iVar12;" (assignment_expression "iVar10 = iVar12" (identifier "iVar10") (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (iVar7 == 0) {\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }\n            else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }\nLAB_00169208:\n              uVar3 = 1;\n              if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }\n              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);\n              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;\n              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);\n              *puVar8 = 0;\n              puVar8[1] = 0;\n              puVar8[2] = 0;\n              *(undefined4 **)(iVar5 + 0x14) = puVar8;\n            }" ({ "{") (labeled_statement "LAB_00169151:\n              if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" (statement_identifier "LAB_00169151") (: ":") (if_statement "if (*(int *)(param_3 + 0xc) != iVar10) {\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0xc) != iVar10)" (( "(") (binary_expression "*(int *)(param_3 + 0xc) != iVar10" (pointer_expression "*(int *)(param_3 + 0xc)" (* "*") (cast_expression "(int *)(param_3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (identifier "iVar10")) () ")")) (compound_statement "{\n                iVar7 = FUN_001adab0(iVar10);\n                goto LAB_00169172;\n              }" ({ "{") (expression_statement "iVar7 = FUN_001adab0(iVar10);" (assignment_expression "iVar7 = FUN_001adab0(iVar10)" (identifier "iVar7") (= "=") (call_expression "FUN_001adab0(iVar10)" (identifier "FUN_001adab0") (argument_list "(iVar10)" (( "(") (identifier "iVar10") () ")")))) (; ";")) (goto_statement "goto LAB_00169172;" (goto "goto") (statement_identifier "LAB_00169172") (; ";")) (} "}")))) (labeled_statement "LAB_00169208:\n              uVar3 = 1;" (statement_identifier "LAB_00169208") (: ":") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";"))) (if_statement "if (iVar12 != iVar10) {\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" (if "if") (parenthesized_expression "(iVar12 != iVar10)" (( "(") (binary_expression "iVar12 != iVar10" (identifier "iVar12") (!= "!=") (identifier "iVar10")) () ")")) (compound_statement "{\n                    \n                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));\n              }" ({ "{") (expression_statement "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10));" (assignment_expression "uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" (identifier "uVar3") (= "=") (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" (identifier "FUN_00168de0") (argument_list "(param_3,*(undefined4 *)(iVar5 + 0x10),\n                                     *(undefined4 *)(iVar10 + 0x10))" (( "(") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_001adb90(uVar3,iVar5,iVar10,iVar12);" (call_expression "FUN_001adb90(uVar3,iVar5,iVar10,iVar12)" (identifier "FUN_001adb90") (argument_list "(uVar3,iVar5,iVar10,iVar12)" (( "(") (identifier "uVar3") (, ",") (identifier "iVar5") (, ",") (identifier "iVar10") (, ",") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;" (assignment_expression "*(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" (* "*") (cast_expression "(int *)(param_3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(int *)(param_3 + 0x14) + 1" (pointer_expression "*(int *)(param_3 + 0x14)" (* "*") (cast_expression "(int *)(param_3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0xc);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0xc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_001aa8c0(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(0xc)" (identifier "FUN_001aa8c0") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(iVar5 + 0x14) = puVar8;" (assignment_expression "*(undefined4 **)(iVar5 + 0x14) = puVar8" (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (} "}")) (else_clause "else {\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" (else "else") (compound_statement "{\n              while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }\n              iVar7 = iVar10;\n              if (cVar2 != '\0') goto LAB_00169151;\nLAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));\n              if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }\n              FUN_001ac470(iVar5);\n              iVar5 = iVar7;\n            }" ({ "{") (while_statement "while( true ) {\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                iVar10 = iVar7;\n                    \n                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));\n                if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }\n                if (iVar7 == 0) break;\n                iVar6 = *(int *)(iVar5 + 0x10);\n              }" ({ "{") (expression_statement "iVar10 = iVar7;" (assignment_expression "iVar10 = iVar7" (identifier "iVar10") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" (identifier "cVar2") (= "=") (call_expression "FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" (identifier "FUN_00168de0") (argument_list "(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10))" (( "(") (identifier "param_3") (, ",") (identifier "iVar6") (, ",") (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }\n                else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 0xc);\n                }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar10 + 0xc);" (assignment_expression "iVar7 = *(int *)(iVar10 + 0xc)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar10 + 0xc)" (* "*") (cast_expression "(int *)(iVar10 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0xc)" (( "(") (binary_expression "iVar10 + 0xc" (identifier "iVar10") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" (else "else") (compound_statement "{\n                  iVar7 = *(int *)(iVar10 + 8);\n                }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar10 + 8);" (assignment_expression "iVar7 = *(int *)(iVar10 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar10 + 8)" (* "*") (cast_expression "(int *)(iVar10 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 8)" (( "(") (binary_expression "iVar10 + 8" (identifier "iVar10") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar7 == 0) break;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x10)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar10;" (assignment_expression "iVar7 = iVar10" (identifier "iVar7") (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (cVar2 != '\0') goto LAB_00169151;" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00169151;" (goto "goto") (statement_identifier "LAB_00169151") (; ";"))) (labeled_statement "LAB_00169172:\n              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" (statement_identifier "LAB_00169172") (: ":") (expression_statement "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10));" (assignment_expression "cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" (identifier "cVar2") (= "=") (call_expression "FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" (identifier "FUN_00168de0") (argument_list "(param_3,*(undefined4 *)(iVar7 + 0x10),\n                                   *(undefined4 *)(iVar5 + 0x10))" (( "(") (identifier "param_3") (, ",") (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";"))) (if_statement "if (cVar2 != '\0') {\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                if (iVar10 != 0) goto LAB_00169208;\n                iVar7 = 0;\n              }" ({ "{") (if_statement "if (iVar10 != 0) goto LAB_00169208;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00169208;" (goto "goto") (statement_identifier "LAB_00169208") (; ";"))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_001ac470(iVar5);" (call_expression "FUN_001ac470(iVar5)" (identifier "FUN_001ac470") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar5 = iVar7;" (assignment_expression "iVar5 = iVar7" (identifier "iVar5") (= "=") (identifier "iVar7")) (; ";")) (} "}")))) (if_statement "if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }\n            else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" (if "if") (parenthesized_expression "(((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8)))" (( "(") (binary_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))" (parenthesized_expression "((*(byte *)(iVar1 + 0x2a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x2a) & 7) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2a) & 7)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x2a) & 7" (pointer_expression "*(byte *)(iVar1 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x2a)" (( "(") (binary_expression "iVar1 + 0x2a" (identifier "iVar1") (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*local_2c == *(int *)(iVar1 + 8))" (( "(") (binary_expression "*local_2c == *(int *)(iVar1 + 8)" (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) (== "==") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n              if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }\n            }" ({ "{") (if_statement "if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }\n              else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x2b) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x2b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x2b) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x2b) & 0x20" (pointer_expression "*(byte *)(iVar1 + 0x2b)" (* "*") (cast_expression "(byte *)(iVar1 + 0x2b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x2b)" (( "(") (binary_expression "iVar1 + 0x2b" (identifier "iVar1") (+ "+") (number_literal "0x2b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));\n                bVar13 = bVar13 ^ 1;\n              }" ({ "{") (expression_statement "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));" (assignment_expression "bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc))" (identifier "bVar13") (= "=") (call_expression "FUN_0014e7c0(*(int *)(iVar1 + 0xc))" (identifier "FUN_0014e7c0") (argument_list "(*(int *)(iVar1 + 0xc))" (( "(") (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "bVar13 = bVar13 ^ 1;" (assignment_expression "bVar13 = bVar13 ^ 1" (identifier "bVar13") (= "=") (binary_expression "bVar13 ^ 1" (identifier "bVar13") (^ "^") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" (else "else") (compound_statement "{\n                bVar13 = *(int *)(iVar1 + 0xc) != 0;\n              }" ({ "{") (expression_statement "bVar13 = *(int *)(iVar1 + 0xc) != 0;" (assignment_expression "bVar13 = *(int *)(iVar1 + 0xc) != 0" (identifier "bVar13") (= "=") (binary_expression "*(int *)(iVar1 + 0xc) != 0" (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0"))) (; ";")) (} "}")))) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" (identifier "piVar9") (= "=") (cast_expression "(int *)puVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)puVar8[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (bVar13 != 0) {\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" (if "if") (parenthesized_expression "(bVar13 != 0)" (( "(") (binary_expression "bVar13 != 0" (identifier "bVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                __src = (int *)*puVar8;\n                if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }\n                goto LAB_001690d8;\n              }" ({ "{") (expression_statement "__src = (int *)*puVar8;" (assignment_expression "__src = (int *)*puVar8" (identifier "__src") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (if_statement "if (piVar11 == piVar9) {\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }\n                else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" (if "if") (parenthesized_expression "(piVar11 == piVar9)" (( "(") (binary_expression "piVar11 == piVar9" (identifier "piVar11") (== "==") (identifier "piVar9")) () ")")) (compound_statement "{\n                  FUN_0011fd60(puVar8,__src,local_2c);\n                  local_20 = local_20 + 1;\n                  if ((int *)piVar4[1] == local_20) break;\n                }" ({ "{") (expression_statement "FUN_0011fd60(puVar8,__src,local_2c);" (call_expression "FUN_0011fd60(puVar8,__src,local_2c)" (identifier "FUN_0011fd60") (argument_list "(puVar8,__src,local_2c)" (( "(") (identifier "puVar8") (, ",") (identifier "__src") (, ",") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int *)piVar4[1] == local_20) break;" (if "if") (parenthesized_expression "((int *)piVar4[1] == local_20)" (( "(") (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "local_20")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" (else "else") (compound_statement "{\n                  iVar1 = *local_2c;\n                  if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                }" ({ "{") (expression_statement "iVar1 = *local_2c;" (assignment_expression "iVar1 = *local_2c" (identifier "iVar1") (= "=") (pointer_expression "*local_2c" (* "*") (identifier "local_2c"))) (; ";")) (if_statement "if (__src == piVar9) {\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }\n                  else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" (if "if") (parenthesized_expression "(__src == piVar9)" (( "(") (binary_expression "__src == piVar9" (identifier "__src") (== "==") (identifier "piVar9")) () ")")) (compound_statement "{\n                    *__src = iVar1;\n                    puVar8[1] = piVar9 + 1;\n                    local_20 = local_20 + 1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" ({ "{") (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" (* "*") (identifier "__src")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int *)piVar4[1] == local_20) break;" (if "if") (parenthesized_expression "((int *)piVar4[1] == local_20)" (( "(") (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "local_20")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" (else "else") (compound_statement "{\n                    *piVar9 = piVar9[-1];\n                    puVar8[1] = piVar9 + 1;\n                    if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }\n                    local_20 = local_20 + 1;\n                    *__src = iVar1;\n                    if ((int *)piVar4[1] == local_20) break;\n                  }" ({ "{") (expression_statement "*piVar9 = piVar9[-1];" (assignment_expression "*piVar9 = piVar9[-1]" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (subscript_expression "piVar9[-1]" (identifier "piVar9") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (__src != piVar9 + -1) {\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" (if "if") (parenthesized_expression "(__src != piVar9 + -1)" (( "(") (binary_expression "__src != piVar9 + -1" (identifier "__src") (!= "!=") (binary_expression "piVar9 + -1" (identifier "piVar9") (+ "+") (number_literal "-1"))) () ")")) (compound_statement "{\n                      __n = (int)(piVar9 + -1) - (int)__src;\n                      memmove((void *)((int)piVar9 - __n),__src,__n);\n                    }" ({ "{") (expression_statement "__n = (int)(piVar9 + -1) - (int)__src;" (assignment_expression "__n = (int)(piVar9 + -1) - (int)__src" (identifier "__n") (= "=") (binary_expression "(int)(piVar9 + -1) - (int)__src" (cast_expression "(int)(piVar9 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar9 + -1)" (( "(") (binary_expression "piVar9 + -1" (identifier "piVar9") (+ "+") (number_literal "-1")) () ")"))) (- "-") (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src")))) (; ";")) (expression_statement "memmove((void *)((int)piVar9 - __n),__src,__n);" (call_expression "memmove((void *)((int)piVar9 - __n),__src,__n)" (identifier "memmove") (argument_list "((void *)((int)piVar9 - __n),__src,__n)" (( "(") (cast_expression "(void *)((int)piVar9 - __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 - __n)" (( "(") (binary_expression "(int)piVar9 - __n" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (identifier "__n")) () ")"))) (, ",") (identifier "__src") (, ",") (identifier "__n") () ")"))) (; ";")) (} "}"))) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*__src = iVar1;" (assignment_expression "*__src = iVar1" (pointer_expression "*__src" (* "*") (identifier "__src")) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if ((int *)piVar4[1] == local_20) break;" (if "if") (parenthesized_expression "((int *)piVar4[1] == local_20)" (( "(") (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "local_20")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (} "}")))) (goto_statement "goto LAB_001690d8;" (goto "goto") (statement_identifier "LAB_001690d8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" (else "else") (compound_statement "{\n              puVar8 = *(undefined4 **)(iVar5 + 0x14);\n              piVar9 = (int *)puVar8[1];\n              piVar11 = (int *)puVar8[2];\n            }" ({ "{") (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x14);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x14)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar9 = (int *)puVar8[1];" (assignment_expression "piVar9 = (int *)puVar8[1]" (identifier "piVar9") (= "=") (cast_expression "(int *)puVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar11 = (int *)puVar8[2];" (assignment_expression "piVar11 = (int *)puVar8[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)puVar8[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (piVar9 == piVar11) {\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" (if "if") (parenthesized_expression "(piVar9 == piVar11)" (( "(") (binary_expression "piVar9 == piVar11" (identifier "piVar9") (== "==") (identifier "piVar11")) () ")")) (compound_statement "{\n              FUN_0011fd60(puVar8,piVar9,local_2c);\n              local_20 = local_20 + 1;\n              if ((int *)piVar4[1] == local_20) break;\n              goto LAB_001690d8;\n            }" ({ "{") (expression_statement "FUN_0011fd60(puVar8,piVar9,local_2c);" (call_expression "FUN_0011fd60(puVar8,piVar9,local_2c)" (identifier "FUN_0011fd60") (argument_list "(puVar8,piVar9,local_2c)" (( "(") (identifier "puVar8") (, ",") (identifier "piVar9") (, ",") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int *)piVar4[1] == local_20) break;" (if "if") (parenthesized_expression "((int *)piVar4[1] == local_20)" (( "(") (binary_expression "(int *)piVar4[1] == local_20" (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "local_20")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_001690d8;" (goto "goto") (statement_identifier "LAB_001690d8") (; ";")) (} "}"))) (expression_statement "*piVar9 = *local_2c;" (assignment_expression "*piVar9 = *local_2c" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (pointer_expression "*local_2c" (* "*") (identifier "local_2c"))) (; ";")) (expression_statement "puVar8[1] = piVar9 + 1;" (assignment_expression "puVar8[1] = piVar9 + 1" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)piVar4[1] != local_20)" (( "(") (binary_expression "(int *)piVar4[1] != local_20" (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "local_20")) () ")")) (; ";"))) (} "}"))) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" (identifier "local_2c") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)param_2[1] != local_2c)" (( "(") (binary_expression "(int *)param_2[1] != local_2c" (cast_expression "(int *)param_2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "local_2c")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void gather_cref(Cref_inputs * this, Objects * objects, Cref_table *
   table) */

void __thiscall var_4::type_1::function_1(type_1 *this,type_2 *objects,type_3 *table)

{
  size_t *psVar1;
  type_4 *var_8;
  type_5 __position;
  type_6 *pOVar3;
  bool bVar4;
  int *var_6;
  type_7 *p_Var6;
  type_4 *s1;
  type_7 *var_10;
  type_8 p_Var8;
  size_t var_23;
  type_5 __position_00;
  type_7 *var_11;
  type_8 var_19;
  type_9 *var_13;
  type_6 **var_3;
  type_10 *var_7;
  
  var_13 = &(table->_M_t)._M_impl.super__Rb_tree_header;
  var_3 = (objects->super__Vector_base<var_4::type_6*var_2,var_5::allocator<var_4::type_6*>var_1>var_2)._M_impl.
             _M_start;
  if (var_3 !=
      (objects->super__Vector_base<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1>var_2)._M_impl._M_finish
     ) {
    do {
      var_6 = (int *)(*(*var_3)->_vptr_Object[0x1d])(*var_3);
      if ((var_6 != (int *)0x0) &&
         (var_7 = (type_10 *)*var_6, var_7 != (type_10 *)var_6[1])) {
LAB_001690d8:
        do {
          var_8 = (type_4 *)*var_7;
          if (var_8 != (type_4 *)0x0) {
            p_Var6 = (type_7 *)var_9(0x18);
            var_10 = (table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_parent;
            p_Var6[1]._M_parent = (type_8)0x0;
            p_Var6[1]._M_color = (type_10)var_8;
            s1 = var_8;
            var_11 = &var_13->_M_header;
            if (var_10 == (type_7 *)0x0) {
LAB_00169151:
              if ((table->_M_t)._M_impl.super__Rb_tree_header._M_header._M_left != var_11) {
                var_10 = (type_7 *)std::var_12(var_11);
                goto LAB_00169172;
              }
LAB_00169208:
              bVar4 = true;
              if (var_13 != (type_9 *)var_11) {
                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */
                bVar4 = type_11::var_14()
                                  ((type_11 *)table,(type_4 *)p_Var6[1]._M_color,
                                   (type_4 *)var_11[1]._M_color);
              }
              std::var_15(bVar4,p_Var6,var_11,&var_13->_M_header);
              psVar1 = &(table->_M_t)._M_impl.super__Rb_tree_header._M_node_count;
              *psVar1 = *psVar1 + 1;
              p_Var8 = (type_8)var_9(0xc);
              p_Var8->_M_color = _S_red;
              p_Var8->_M_parent = (type_8)0x0;
              p_Var8->_M_left = (type_8)0x0;
              p_Var6[1]._M_parent = p_Var8;
            }
            else {
              while( true ) {
                var_11 = var_10;
                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */
                bVar4 = type_11::var_14()
                                  ((type_11 *)table,s1,(type_4 *)var_11[1]._M_color);
                if (bVar4) {
                  var_10 = var_11->_M_left;
                }
                else {
                  var_10 = var_11->_M_right;
                }
                if (var_10 == (type_8)0x0) break;
                s1 = (type_4 *)p_Var6[1]._M_color;
              }
              var_10 = var_11;
              if (bVar4) goto LAB_00169151;
LAB_00169172:
              bVar4 = type_11::var_14()
                                ((type_11 *)table,(type_4 *)var_10[1]._M_color,
                                 (type_4 *)p_Var6[1]._M_color);
              if (bVar4) {
                if (var_11 != (type_7 *)0x0) goto LAB_00169208;
                var_10 = (type_7 *)0x0;
              }
              var_16(p_Var6);
              p_Var6 = var_10;
            }
            if (((var_8->field_0x2a & 7) == 0) && (*var_3 == (var_8->u1_).object)) {
              if ((var_8->field_0x2b & 0x20) == 0) {
                bVar4 = type_4::var_17((var_8->u2_).shndx);
                bVar4 = !bVar4;
              }
              else {
                bVar4 = (var_8->u2_).shndx != 0;
              }
              p_Var8 = p_Var6[1]._M_parent;
              __position_00._M_current = (type_6 **)p_Var8->_M_parent;
              var_19 = p_Var8->_M_left;
              if (bVar4) {
                __position._M_current =
                     (((var_18<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1> *var_2)
                      &p_Var8->_M_color)->_M_impl)._M_start;
                if (var_19 == (type_8)__position_00._M_current) {
                  std::var_21<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1>::
                  _M_realloc_insert<var_4::type_6*var_20&>
                            ((var_21<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1> *)p_Var8,
                             __position,var_3);
                  var_7 = var_7 + 1;
                  if ((type_10 *)var_6[1] == var_7) break;
                }
                else {
                  pOVar3 = *var_3;
                  if (__position._M_current == __position_00._M_current) {
                    *__position._M_current = pOVar3;
                    p_Var8->_M_parent = (type_8)&((type_8)__position_00._M_current)->_M_parent
                    ;
                    var_7 = var_7 + 1;
                    if ((type_10 *)var_6[1] == var_7) break;
                  }
                  else {
                    ((type_8)__position_00._M_current)->_M_color =
                         (type_10)
                         ((type_8)((int)__position_00._M_current + -0x10))->_M_right;
                    p_Var8->_M_parent = (type_8)&((type_8)__position_00._M_current)->_M_parent
                    ;
                    if (__position._M_current !=
                        (type_6 **)&((type_8)((int)__position_00._M_current + -0x10))->_M_right)
                    {
                      var_23 = (int)&((type_8)((int)__position_00._M_current + -0x10))->_M_right -
                            (int)__position._M_current;
                      var_22((void *)((int)__position_00._M_current - var_23),__position._M_current,
                              var_23);
                    }
                    var_7 = var_7 + 1;
                    *__position._M_current = pOVar3;
                    if ((type_10 *)var_6[1] == var_7) break;
                  }
                }
                goto LAB_001690d8;
              }
            }
            else {
              p_Var8 = p_Var6[1]._M_parent;
              __position_00._M_current = (type_6 **)p_Var8->_M_parent;
              var_19 = p_Var8->_M_left;
            }
            if ((type_8)__position_00._M_current == var_19) {
              std::var_21<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1>::
              _M_realloc_insert<var_4::type_6*var_20&>
                        ((var_21<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1> *)p_Var8,
                         __position_00,var_3);
              var_7 = var_7 + 1;
              if ((type_10 *)var_6[1] == var_7) break;
              goto LAB_001690d8;
            }
            *__position_00._M_current = *var_3;
            p_Var8->_M_parent = (type_8)(__position_00._M_current + 1);
          }
          var_7 = var_7 + 1;
        } while ((type_10 *)var_6[1] != var_7);
      }
      var_3 = var_3 + 1;
    } while ((objects->super__Vector_base<var_4::type_6*,var_5::allocator<var_4::type_6*>var_1>var_2)._M_impl.
             _M_finish != var_3);
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  int iVar1;
  int *__src;
  char cVar2;
  undefined1 uVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  size_t __n;
  int *piVar9;
  int iVar10;
  int *piVar11;
  int iVar12;
  byte bVar13;
  int *local_2c;
  int *local_20;
  
  iVar12 = param_3 + 4;
  local_2c = (int *)*param_2;
  if (local_2c != (int *)param_2[1]) {
    do {
      piVar4 = (int *)(**(code **)(*(int *)*local_2c + 0x74))((int *)*local_2c);
      if ((piVar4 != (int *)0x0) && (local_20 = (int *)*piVar4, local_20 != (int *)piVar4[1])) {
LAB_001690d8:
        do {
          iVar1 = *local_20;
          if (iVar1 != 0) {
            iVar5 = FUN_001aa8c0(0x18);
            iVar7 = *(int *)(param_3 + 8);
            *(undefined4 *)(iVar5 + 0x14) = 0;
            *(int *)(iVar5 + 0x10) = iVar1;
            iVar6 = iVar1;
            iVar10 = iVar12;
            if (iVar7 == 0) {
LAB_00169151:
              if (*(int *)(param_3 + 0xc) != iVar10) {
                iVar7 = FUN_001adab0(iVar10);
                goto LAB_00169172;
              }
LAB_00169208:
              uVar3 = 1;
              if (iVar12 != iVar10) {
                    /* try { // try from 0016932c to 00169330 has its CatchHandler @ 001693b3 */
                uVar3 = FUN_00168de0(param_3,*(undefined4 *)(iVar5 + 0x10),
                                     *(undefined4 *)(iVar10 + 0x10));
              }
              FUN_001adb90(uVar3,iVar5,iVar10,iVar12);
              *(int *)(param_3 + 0x14) = *(int *)(param_3 + 0x14) + 1;
              puVar8 = (undefined4 *)FUN_001aa8c0(0xc);
              *puVar8 = 0;
              puVar8[1] = 0;
              puVar8[2] = 0;
              *(undefined4 **)(iVar5 + 0x14) = puVar8;
            }
            else {
              while( true ) {
                iVar10 = iVar7;
                    /* try { // try from 00169136 to 00169182 has its CatchHandler @ 001693b3 */
                cVar2 = FUN_00168de0(param_3,iVar6,*(undefined4 *)(iVar10 + 0x10));
                if (cVar2 == '\0') {
                  iVar7 = *(int *)(iVar10 + 0xc);
                }
                else {
                  iVar7 = *(int *)(iVar10 + 8);
                }
                if (iVar7 == 0) break;
                iVar6 = *(int *)(iVar5 + 0x10);
              }
              iVar7 = iVar10;
              if (cVar2 != '\0') goto LAB_00169151;
LAB_00169172:
              cVar2 = FUN_00168de0(param_3,*(undefined4 *)(iVar7 + 0x10),
                                   *(undefined4 *)(iVar5 + 0x10));
              if (cVar2 != '\0') {
                if (iVar10 != 0) goto LAB_00169208;
                iVar7 = 0;
              }
              FUN_001ac470(iVar5);
              iVar5 = iVar7;
            }
            if (((*(byte *)(iVar1 + 0x2a) & 7) == 0) && (*local_2c == *(int *)(iVar1 + 8))) {
              if ((*(byte *)(iVar1 + 0x2b) & 0x20) == 0) {
                bVar13 = FUN_0014e7c0(*(int *)(iVar1 + 0xc));
                bVar13 = bVar13 ^ 1;
              }
              else {
                bVar13 = *(int *)(iVar1 + 0xc) != 0;
              }
              puVar8 = *(undefined4 **)(iVar5 + 0x14);
              piVar9 = (int *)puVar8[1];
              piVar11 = (int *)puVar8[2];
              if (bVar13 != 0) {
                __src = (int *)*puVar8;
                if (piVar11 == piVar9) {
                  FUN_0011fd60(puVar8,__src,local_2c);
                  local_20 = local_20 + 1;
                  if ((int *)piVar4[1] == local_20) break;
                }
                else {
                  iVar1 = *local_2c;
                  if (__src == piVar9) {
                    *__src = iVar1;
                    puVar8[1] = piVar9 + 1;
                    local_20 = local_20 + 1;
                    if ((int *)piVar4[1] == local_20) break;
                  }
                  else {
                    *piVar9 = piVar9[-1];
                    puVar8[1] = piVar9 + 1;
                    if (__src != piVar9 + -1) {
                      __n = (int)(piVar9 + -1) - (int)__src;
                      memmove((void *)((int)piVar9 - __n),__src,__n);
                    }
                    local_20 = local_20 + 1;
                    *__src = iVar1;
                    if ((int *)piVar4[1] == local_20) break;
                  }
                }
                goto LAB_001690d8;
              }
            }
            else {
              puVar8 = *(undefined4 **)(iVar5 + 0x14);
              piVar9 = (int *)puVar8[1];
              piVar11 = (int *)puVar8[2];
            }
            if (piVar9 == piVar11) {
              FUN_0011fd60(puVar8,piVar9,local_2c);
              local_20 = local_20 + 1;
              if ((int *)piVar4[1] == local_20) break;
              goto LAB_001690d8;
            }
            *piVar9 = *local_2c;
            puVar8[1] = piVar9 + 1;
          }
          local_20 = local_20 + 1;
        } while ((int *)piVar4[1] != local_20);
      }
      local_2c = local_2c + 1;
    } while ((int *)param_2[1] != local_2c);
  }
  return;
}

