
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void read_symbols(Archive * this, off_t off) */

void __thiscall gold::Archive::read_symbols(Archive *this,off_t off)

{
  _Base_ptr *pp_Var1;
  _Rb_tree_header *p_Var2;
  size_t *psVar3;
  _Rb_tree_node_base *p_Var4;
  _Base_ptr p_Var5;
  uint uVar6;
  int iVar7;
  _Rb_tree_color _Var8;
  int iVar9;
  Object *pOVar10;
  _Base_ptr p_Var11;
  _Rb_tree_node_base *p_Var12;
  _Rb_tree_node_base *p_Var13;
  _Rb_tree_node_base *p_Var14;
  bool bVar15;
  _Rb_tree_node_base *local_24;
  _Rb_tree_node_base *p_Stack_20;
  
  _Var8 = (_Rb_tree_color)off;
  iVar9 = off._4_4_;
  pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0);
  if (pOVar10 == (Object *)0x0) {
    return;
  }
  p_Var11 = (_Base_ptr)operator_new(0x40);
  p_Var11->_M_color = _S_red;
  p_Var11->_M_parent = (_Base_ptr)0x0;
  p_Var11->_M_right = (_Base_ptr)0x0;
  p_Var11[1]._M_left = (_Base_ptr)0x0;
  p_Var11[2]._M_color = _S_red;
  p_Var11[2]._M_left = (_Base_ptr)0x0;
  p_Var11[3]._M_parent = (_Base_ptr)0x0;
  (*pOVar10->_vptr_Object[8])(pOVar10,p_Var11);
  p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;
  p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  p_Var12 = &p_Var2->_M_header;
  if (p_Var4 == (_Rb_tree_node_base *)0x0) {
LAB_00196920:
    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);
    p_Var13[1]._M_left = (_Base_ptr)0x0;
    p_Var13[1]._M_color = (_Rb_tree_color)off;
    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;
    p_Var13[1]._M_right = (_Base_ptr)0x0;
    p_Var13[2]._M_color = _S_red;
    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||
       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,
       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,
       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==
       (int)(iVar7 - uVar6) < 0)) {
      std::
      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>
      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));
LAB_001969b3:
      p_Var14 = p_Stack_20;
      p_Var12 = local_24;
      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {
LAB_001969ca:
        operator_delete(p_Var13);
        p_Var14 = p_Var12;
        goto LAB_001968f4;
      }
LAB_001969b7:
      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;
      p_Var12 = p_Var14;
    }
    else {
LAB_0019691a:
      bVar15 = false;
    }
  }
  else {
    do {
      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),
            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,
            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=
            (int)(iVar7 - uVar6) < 0) {
        pp_Var1 = &p_Var14->_M_right;
        p_Var4 = *pp_Var1;
        p_Var14 = p_Var12;
        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;
      }
      p_Var4 = p_Var14->_M_left;
      p_Var12 = p_Var14;
    } while (p_Var14->_M_left != (_Base_ptr)0x0);
LAB_001967a0:
    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;
    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);
    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;
    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==
        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;
    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);
    p_Var13[1]._M_left = (_Base_ptr)0x0;
    p_Var4 = p_Var13 + 1;
    p_Var4->_M_color = (_Rb_tree_color)off;
    p_Var4->_M_parent = (_Base_ptr)off._4_4_;
    p_Var5 = p_Var14[1]._M_parent;
    p_Var13[1]._M_right = (_Base_ptr)0x0;
    p_Var13[2]._M_color = _S_red;
    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);
    p_Var12 = p_Var14;
    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==
        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {
      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);
      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==
          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;
      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {
        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);
        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);
        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;
        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==
            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;
        if (p_Var14->_M_right == (_Base_ptr)0x0) {
          p_Var12 = p_Var14;
        }
        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;
        goto LAB_001968c7;
      }
      goto LAB_0019691a;
    }
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {
      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);
      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);
      iVar7 = (int)p_Var12[1]._M_parent - iVar9;
      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==
          (int)(iVar7 - uVar6) < 0) {
LAB_00196a00:
        std::
        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>
        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);
        goto LAB_001969b3;
      }
      local_24 = p_Var14;
      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;
      goto LAB_001969b7;
    }
    bVar15 = true;
  }
LAB_001968c7:
  if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {
    bVar15 = true;
  }
  else {
    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);
    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;
    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=
             (int)(iVar7 - uVar6) < 0;
  }
  std::_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);
  psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;
  *psVar3 = *psVar3 + 1;
  p_Var14 = p_Var13;
LAB_001968f4:
  p_Var14[2]._M_color = _S_red;
  p_Var14[1]._M_left = (_Base_ptr)pOVar10;
  p_Var14[1]._M_right = p_Var11;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_001966d0(int param_1,uint param_2,uint param_3)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  undefined4 *puVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  uint *puVar13;
  bool bVar14;
  undefined4 uStack_50;
  undefined1 auStack_4c [8];
  uint local_44;
  uint local_40;
  int *local_3c;
  undefined4 *local_38;
  uint *local_34;
  uint *local_30;
  uint *local_2c;
  uint *local_28;
  uint *local_24 [4];
  undefined4 uStack_14;
  
  uStack_14 = 0x1966d9;
  local_44 = param_2;
  local_40 = param_3;
  uStack_50 = 0;
  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);
  if (piVar5 == (int *)0x0) {
    return;
  }
  local_3c = piVar5;
  puVar6 = (undefined4 *)FUN_001e5210(0x40);
  *puVar6 = 0;
  puVar6[1] = 0;
  puVar6[3] = 0;
  puVar6[6] = 0;
  puVar6[8] = 0;
  puVar6[10] = 0;
  puVar6[0xd] = 0;
  local_38 = puVar6;
  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);
  local_34 = (uint *)(param_1 + 0x98);
  puVar12 = (undefined4 *)auStack_4c;
  puVar7 = *(uint **)(param_1 + 0x9c);
  puVar8 = local_34;
  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {
LAB_00196920:
    puVar8 = (uint *)FUN_001e5210(0x24);
    puVar8[6] = 0;
    puVar8[4] = local_44;
    puVar8[5] = local_40;
    puVar8[7] = 0;
    puVar8[8] = 0;
    if ((*(int *)(param_1 + 0xa8) != 0) &&
       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,
       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=
       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {
LAB_0019691a:
      bVar14 = false;
      goto LAB_001968c5;
    }
    local_30 = puVar8;
    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);
    puVar9 = local_24[0];
    puVar8 = local_34;
LAB_001969b3:
    puVar11 = &uStack_50;
    puVar12 = &uStack_50;
    puVar7 = local_28;
    puVar13 = local_28;
    if (puVar9 == (uint *)0x0) {
LAB_001969ca:
      *(uint **)((int)puVar12 + -0x10) = puVar8;
      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;
      FUN_001e6dc0();
      puVar9 = puVar7;
      goto LAB_001968f4;
    }
LAB_001969b7:
    bVar14 = puVar13 != (uint *)0x0;
    puVar7 = puVar9;
    puVar12 = puVar11;
  }
  else {
    do {
      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,
            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=
            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {
        puVar13 = puVar9 + 3;
        puVar7 = (uint *)*puVar13;
        puVar9 = puVar8;
        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;
      }
      puVar7 = (uint *)puVar9[2];
      puVar8 = puVar9;
    } while ((uint *)puVar9[2] != (uint *)0x0);
LAB_001967a0:
    local_3c = piVar5;
    local_38 = puVar6;
    if (local_34 == puVar9) goto LAB_00196920;
    iVar2 = local_40 - puVar9[5];
    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==
        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;
    local_2c = (uint *)(param_1 + 0x94);
    puVar8 = (uint *)FUN_001e5210(0x24);
    uVar4 = local_40;
    uVar3 = local_44;
    puVar8[6] = 0;
    local_30 = puVar8 + 4;
    *local_30 = local_44;
    puVar8[5] = local_40;
    uVar10 = puVar9[5];
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar12 = (undefined4 *)auStack_4c;
    uVar1 = (uint)(local_44 < puVar9[4]);
    puVar7 = puVar9;
    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==
        (int)((local_40 - uVar10) - uVar1) < 0) {
      uVar1 = (uint)(puVar9[4] < local_44);
      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==
          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;
      if (*(uint **)(param_1 + 0xa4) != puVar9) {
        local_28 = puVar8;
        puVar7 = (uint *)FUN_001e83a0(puVar9);
        iVar2 = uVar4 - puVar7[5];
        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==
            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;
        if (puVar9[3] == 0) {
          puVar7 = puVar9;
        }
        bVar14 = puVar9[3] != 0;
        puVar8 = local_28;
        goto LAB_001968c5;
      }
      goto LAB_0019691a;
    }
    if (*(uint **)(param_1 + 0xa0) != puVar9) {
      local_28 = puVar8;
      puVar7 = (uint *)FUN_001e8400(puVar9);
      puVar11 = (undefined4 *)auStack_4c;
      iVar2 = puVar7[5] - local_40;
      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==
          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {
LAB_00196a00:
        FUN_001989e0(local_24,local_2c,local_30);
        puVar9 = local_24[0];
        puVar8 = local_2c;
        goto LAB_001969b3;
      }
      puVar8 = local_28;
      puVar13 = puVar9;
      if (puVar7[3] == 0) goto LAB_0019691a;
      goto LAB_001969b7;
    }
    bVar14 = true;
LAB_001968c5:
    puVar12 = (undefined4 *)auStack_4c;
  }
  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {
    uVar10 = 1;
  }
  else {
    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];
    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=
                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=
                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);
  }
  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);
  *(uint **)((int)puVar12 + -8) = puVar7;
  *(uint **)((int)puVar12 + -0xc) = puVar8;
  *(uint *)((int)puVar12 + -0x10) = uVar10;
  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;
  FUN_001e84e0();
  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =
       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;
  puVar9 = puVar8;
LAB_001968f4:
  uVar10 = *(uint *)((int)puVar12 + 0x10);
  puVar9[8] = 0;
  puVar9[6] = uVar10;
  puVar9[7] = *(uint *)((int)puVar12 + 0x14);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x1f8927
SUB ESP,0x3c
MOV EAX,dword ptr [ESP + 0x54]
MOV EDX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
PUSH 0x0
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x5c]
CALL 0x00196220
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00196909
SUB ESP,0xc
MOV ESI,EAX
PUSH 0x40
CALL 0x001e5210
MOV dword ptr [ESP + 0x24],EAX
MOV EDI,EAX
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x18],0x0
MOV dword ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x28],0x0
MOV dword ptr [EAX + 0x34],0x0
POP EBP
MOV EBP,ESI
POP EAX
MOV EAX,dword ptr [ESI]
PUSH EDI
PUSH ESI
CALL dword ptr [EAX + 0x20]
MOV EAX,dword ptr [ESP + 0x60]
LEA ESI,[EAX + 0x98]
MOV EAX,dword ptr [EAX + 0x9c]
MOV dword ptr [ESP + 0x28],ESI
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00196789
JMP 0x00196920
MOV ESI,EAX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x001967a0
MOV EDX,dword ptr [EAX + 0x14]
MOV ECX,dword ptr [ESP + 0x8]
CMP dword ptr [EAX + 0x10],ECX
SBB EDX,dword ptr [ESP + 0xc]
JGE 0x00196780
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x00196789
MOV dword ptr [ESP + 0x10],EBP
MOV dword ptr [ESP + 0x14],EDI
CMP dword ptr [ESP + 0x18],ESI
JZ 0x00196920
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESI + 0x10]
MOV EAX,EDX
SBB EAX,dword ptr [ESI + 0x14]
JGE 0x001968f4
MOV EAX,dword ptr [ESP + 0x50]
SUB ESP,0xc
ADD EAX,0x94
MOV dword ptr [ESP + 0x2c],EAX
PUSH 0x24
CALL 0x001e5210
MOV EDI,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0x18],0x0
MOV EDX,EAX
LEA EAX,[EAX + 0x10]
MOV dword ptr [EAX],EDI
MOV dword ptr [EAX + 0x4],EBP
MOV ECX,dword ptr [ESI + 0x14]
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESI + 0x10]
ADD ESP,0x10
CMP EDI,EAX
MOV EDI,EBP
SBB EDI,ECX
JGE 0x00196870
MOV EAX,dword ptr [ESP + 0x50]
CMP dword ptr [EAX + 0xa0],ESI
JZ 0x00196a38
MOV dword ptr [ESP + 0x24],EDX
SUB ESP,0xc
PUSH ESI
CALL 0x001e8400
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [EAX + 0x14]
CMP dword ptr [EAX + 0x10],EDI
MOV EDX,dword ptr [ESP + 0x24]
SBB ECX,EBP
JGE 0x00196a00
MOV EDI,dword ptr [EAX + 0xc]
TEST EDI,EDI
JZ 0x0019691a
MOV EAX,ESI
MOV EDI,ESI
MOV ESI,EDX
JMP 0x001969b7
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
CMP EAX,EDI
SBB ECX,EBP
JGE 0x001969ca
MOV EAX,dword ptr [ESP + 0x50]
CMP dword ptr [EAX + 0xa4],ESI
JZ 0x00196918
MOV dword ptr [ESP + 0x24],EDX
SUB ESP,0xc
PUSH ESI
CALL 0x001e83a0
ADD ESP,0x10
MOV ECX,EBP
MOV EDX,dword ptr [ESP + 0x24]
CMP EDI,dword ptr [EAX + 0x10]
SBB ECX,dword ptr [EAX + 0x14]
JGE 0x00196a00
MOV ECX,dword ptr [ESI + 0xc]
TEST ECX,ECX
CMOVZ EAX,ESI
CMP dword ptr [ESI + 0xc],0x1
SBB ECX,ECX
ADD ECX,0x1
MOV ESI,EDX
CMP EAX,dword ptr [ESP + 0x18]
JZ 0x001968d5
TEST CL,CL
JZ 0x001969e0
MOV ECX,0x1
PUSH dword ptr [ESP + 0x18]
PUSH EAX
PUSH EDX
PUSH ECX
CALL 0x001e84e0
MOV EAX,dword ptr [ESP + 0x60]
ADD ESP,0x10
ADD dword ptr [EAX + 0xa8],0x1
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0x1c],EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,ESI
XOR ECX,ECX
JMP 0x001968c5
SUB ESP,0xc
PUSH 0x24
CALL 0x001e5210
MOV EDI,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV EDX,EAX
MOV dword ptr [EAX + 0x18],0x0
MOV dword ptr [EAX + 0x10],EDI
MOV dword ptr [EAX + 0x14],EBP
MOV dword ptr [EAX + 0x1c],0x0
MOV dword ptr [EAX + 0x20],0x0
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX + 0xa8]
TEST EAX,EAX
JZ 0x0019697c
MOV EAX,dword ptr [ESP + 0x50]
MOV EBP,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0xa4]
MOV ECX,dword ptr [EAX + 0x14]
CMP dword ptr [EAX + 0x10],EDI
SBB ECX,EBP
JL 0x0019691a
LEA EAX,[ESP + 0x28]
LEA ECX,[EDX + 0x10]
SUB ESP,0x4
MOV dword ptr [ESP + 0x20],EDX
PUSH ECX
MOV ECX,dword ptr [ESP + 0x58]
ADD ECX,0x94
PUSH ECX
PUSH EAX
CALL 0x001989e0
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x38]
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0x1c]
MOV EBP,EAX
MOV EDI,EAX
MOV EAX,ECX
MOV ESI,EDX
TEST ECX,ECX
JZ 0x001969c8
TEST EDI,EDI
SETNZ CL
JMP 0x001968c7
MOV ESI,EBP
SUB ESP,0xc
PUSH EDX
CALL 0x001e6dc0
ADD ESP,0x10
JMP 0x001968f4
MOV EBP,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8]
CMP EDI,dword ptr [EAX + 0x10]
MOV ECX,EBP
SBB ECX,dword ptr [EAX + 0x14]
SETL CL
MOVZX ECX,CL
JMP 0x001968da
MOV dword ptr [ESP + 0x24],EDX
LEA EAX,[ESP + 0x28]
SUB ESP,0x4
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x28]
PUSH EAX
CALL 0x001989e0
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x38]
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0x24]
MOV EBP,EAX
MOV EDI,EAX
MOV EAX,ECX
MOV ESI,EDX
JMP 0x001969b3
MOV EAX,ESI
MOV ECX,0x1
JMP 0x001968c5
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_001966d0(int param_1,uint param_2,uint param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}\n\n" comment (function_definition "void FUN_001966d0(int param_1,uint param_2,uint param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" primitive_type (function_declarator "FUN_001966d0(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined4 uStack_50;" type_identifier identifier ;) (declaration "undefined1 auStack_4c [8];" type_identifier (array_declarator "auStack_4c [8]" identifier [ number_literal ]) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined4 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "uint *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint *local_24 [4];" type_identifier (pointer_declarator "*local_24 [4]" * (array_declarator "local_24 [4]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1966d9;" (assignment_expression "uStack_14 = 0x1966d9" identifier = number_literal) ;) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" identifier = identifier) ;) (expression_statement "local_40 = param_3;" (assignment_expression "local_40 = param_3" identifier = identifier) ;) (expression_statement "uStack_50 = 0;" (assignment_expression "uStack_50 = 0" identifier = number_literal) ;) (expression_statement "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);" (assignment_expression "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3)" identifier = (cast_expression "(int *)FUN_00196220(param_1,param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00196220(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n    return;\n  }" if (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)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" identifier = identifier) ;) (expression_statement "puVar6 = (undefined4 *)FUN_001e5210(0x40);" (assignment_expression "puVar6 = (undefined4 *)FUN_001e5210(0x40)" identifier = (cast_expression "(undefined4 *)FUN_001e5210(0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[10] = 0;" (assignment_expression "puVar6[10] = 0" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[0xd] = 0;" (assignment_expression "puVar6[0xd] = 0" (subscript_expression "puVar6[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6);" (call_expression "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6)" (parenthesized_expression "(**(code **)(*piVar5 + 0x20))" ( (pointer_expression "**(code **)(*piVar5 + 0x20)" * (pointer_expression "*(code **)(*piVar5 + 0x20)" * (cast_expression "(code **)(*piVar5 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x20)" ( (binary_expression "*piVar5 + 0x20" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar6)" ( identifier , identifier ))) ;) (expression_statement "local_34 = (uint *)(param_1 + 0x98);" (assignment_expression "local_34 = (uint *)(param_1 + 0x98)" identifier = (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar7 = *(uint **)(param_1 + 0x9c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x9c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x9c)" * (cast_expression "(uint **)(param_1 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" identifier = identifier) ;) (if_statement "if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" if (parenthesized_expression "(*(uint **)(param_1 + 0x9c) == (uint *)0x0)" ( (binary_expression "*(uint **)(param_1 + 0x9c) == (uint *)0x0" (pointer_expression "*(uint **)(param_1 + 0x9c)" * (cast_expression "(uint **)(param_1 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }" { (labeled_statement "LAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);" statement_identifier : (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[4] = local_44;" (assignment_expression "puVar8[4] = local_44" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" if (parenthesized_expression "((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0))" ( (binary_expression "(*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" ( (comma_expression "puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "puVar7 = *(uint **)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint **)(param_1 + 0xa4)" * (cast_expression "(uint **)(param_1 + 0xa4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) , (comma_expression "iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar7[5] - local_40" identifier = (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" identifier [ number_literal ]) - identifier)) , (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" ( (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" identifier (argument_list "(puVar7[5],local_40)" ( (subscript_expression "puVar7[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" ( identifier , (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" identifier - (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)))) ))) )) (compound_statement "{\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" { (labeled_statement "LAB_0019691a:\n      bVar14 = false;" statement_identifier : (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;)) (goto_statement "goto LAB_001968c5;" goto statement_identifier ;) })) (expression_statement "local_30 = puVar8;" (assignment_expression "local_30 = puVar8" identifier = identifier) ;) (expression_statement "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);" (call_expression "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4)" identifier (argument_list "(local_24,param_1 + 0x94,puVar8 + 4)" ( identifier , (binary_expression "param_1 + 0x94" identifier + number_literal) , (binary_expression "puVar8 + 4" identifier + number_literal) ))) ;) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" identifier = (subscript_expression "local_24[0]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" identifier = identifier) ;) (labeled_statement "LAB_001969b3:\n    puVar11 = &uStack_50;" statement_identifier : (expression_statement "puVar11 = &uStack_50;" (assignment_expression "puVar11 = &uStack_50" identifier = (pointer_expression "&uStack_50" & identifier)) ;)) (expression_statement "puVar12 = &uStack_50;" (assignment_expression "puVar12 = &uStack_50" identifier = (pointer_expression "&uStack_50" & identifier)) ;) (expression_statement "puVar7 = local_28;" (assignment_expression "puVar7 = local_28" identifier = identifier) ;) (expression_statement "puVar13 = local_28;" (assignment_expression "puVar13 = local_28" identifier = identifier) ;) (if_statement "if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" if (parenthesized_expression "(puVar9 == (uint *)0x0)" ( (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" { (labeled_statement "LAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;" statement_identifier : (expression_statement "*(uint **)((int)puVar12 + -0x10) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0x10) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0x10)" * (cast_expression "(uint **)((int)puVar12 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -0x10)" ( (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x14)" ( (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;) })) (labeled_statement "LAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;" statement_identifier : (expression_statement "bVar14 = puVar13 != (uint *)0x0;" (assignment_expression "bVar14 = puVar13 != (uint *)0x0" identifier = (binary_expression "puVar13 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" else (compound_statement "{\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" { (do_statement "do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);" do (compound_statement "{\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    }" { (while_statement "while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" while (parenthesized_expression "(puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0)" ( (comma_expression "puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "puVar9 = puVar7" identifier = identifier) , (comma_expression "iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar9[5] - local_40" identifier = (binary_expression "puVar9[5] - local_40" (subscript_expression "puVar9[5]" identifier [ number_literal ]) - identifier)) , (binary_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44)))" ( (binary_expression "SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" (call_expression "SBORROW4(puVar9[5],local_40)" identifier (argument_list "(puVar9[5],local_40)" ( (subscript_expression "puVar9[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar9[4] < local_44))" ( identifier , (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar9[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar9[4] < local_44)" identifier - (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)))) )) (compound_statement "{\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" { (expression_statement "puVar13 = puVar9 + 3;" (assignment_expression "puVar13 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar7 = (uint *)*puVar13;" (assignment_expression "puVar7 = (uint *)*puVar13" identifier = (cast_expression "(uint *)*puVar13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;" if (parenthesized_expression "((uint *)*puVar13 == (uint *)0x0)" ( (binary_expression "(uint *)*puVar13 == (uint *)0x0" (cast_expression "(uint *)*puVar13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier)) == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001967a0;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (uint *)puVar9[2];" (assignment_expression "puVar7 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((uint *)puVar9[2] != (uint *)0x0)" ( (binary_expression "(uint *)puVar9[2] != (uint *)0x0" (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_001967a0:\n    local_3c = piVar5;" statement_identifier : (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" identifier = identifier) ;)) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" identifier = identifier) ;) (if_statement "if (local_34 == puVar9) goto LAB_00196920;" if (parenthesized_expression "(local_34 == puVar9)" ( (binary_expression "local_34 == puVar9" identifier == identifier) )) (goto_statement "goto LAB_00196920;" goto statement_identifier ;)) (expression_statement "iVar2 = local_40 - puVar9[5];" (assignment_expression "iVar2 = local_40 - puVar9[5]" identifier = (binary_expression "local_40 - puVar9[5]" identifier - (subscript_expression "puVar9[5]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;" if (parenthesized_expression "((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0)" ( (binary_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (parenthesized_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4])))" ( (binary_expression "SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" (call_expression "SBORROW4(local_40,puVar9[5])" identifier (argument_list "(local_40,puVar9[5])" ( identifier , (subscript_expression "puVar9[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" identifier (argument_list "(iVar2,(uint)(local_44 < puVar9[4]))" ( identifier , (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(local_44 < puVar9[4]))" ( (binary_expression "iVar2 - (uint)(local_44 < puVar9[4])" identifier - (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;)) (expression_statement "local_2c = (uint *)(param_1 + 0x94);" (assignment_expression "local_2c = (uint *)(param_1 + 0x94)" identifier = (cast_expression "(uint *)(param_1 + 0x94)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) ;) (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" identifier = identifier) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = puVar8 + 4;" (assignment_expression "local_30 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "*local_30 = local_44;" (assignment_expression "*local_30 = local_44" (pointer_expression "*local_30" * identifier) = identifier) ;) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = puVar9[5];" (assignment_expression "uVar10 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar1 = (uint)(local_44 < puVar9[4]);" (assignment_expression "uVar1 = (uint)(local_44 < puVar9[4])" identifier = (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) )))) ;) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) (if_statement "if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" if (parenthesized_expression "((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0)" ( (binary_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1))" ( (binary_expression "SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)" (call_expression "SBORROW4(local_40,uVar10)" identifier (argument_list "(local_40,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_40 - uVar10,uVar1)" identifier (argument_list "(local_40 - uVar10,uVar1)" ( (binary_expression "local_40 - uVar10" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((local_40 - uVar10) - uVar1) < 0" (cast_expression "(int)((local_40 - uVar10) - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_40 - uVar10) - uVar1)" ( (binary_expression "(local_40 - uVar10) - uVar1" (parenthesized_expression "(local_40 - uVar10)" ( (binary_expression "local_40 - uVar10" identifier - identifier) )) - identifier) ))) < number_literal)) )) (compound_statement "{\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" { (expression_statement "uVar1 = (uint)(puVar9[4] < local_44);" (assignment_expression "uVar1 = (uint)(puVar9[4] < local_44)" identifier = (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) )))) ;) (if_statement "if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;" if (parenthesized_expression "((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0)" ( (binary_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0" (parenthesized_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1))" ( (binary_expression "SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)" (call_expression "SBORROW4(uVar10,local_40)" identifier (argument_list "(uVar10,local_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar10 - local_40,uVar1)" identifier (argument_list "(uVar10 - local_40,uVar1)" ( (binary_expression "uVar10 - local_40" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((uVar10 - local_40) - uVar1) < 0" (cast_expression "(int)((uVar10 - local_40) - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar10 - local_40) - uVar1)" ( (binary_expression "(uVar10 - local_40) - uVar1" (parenthesized_expression "(uVar10 - local_40)" ( (binary_expression "uVar10 - local_40" identifier - identifier) )) - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_001969ca;" goto statement_identifier ;)) (if_statement "if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" if (parenthesized_expression "(*(uint **)(param_1 + 0xa4) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0xa4) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa4)" * (cast_expression "(uint **)(param_1 + 0xa4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" { (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_001e83a0(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e83a0(puVar9)" identifier = (cast_expression "(uint *)FUN_001e83a0(puVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e83a0(puVar9)" identifier (argument_list "(puVar9)" ( identifier ))))) ;) (expression_statement "iVar2 = uVar4 - puVar7[5];" (assignment_expression "iVar2 = uVar4 - puVar7[5]" identifier = (binary_expression "uVar4 - puVar7[5]" identifier - (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;" if (parenthesized_expression "((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0)" ( (binary_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4])))" ( (binary_expression "SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" (call_expression "SBORROW4(uVar4,puVar7[5])" identifier (argument_list "(uVar4,puVar7[5])" ( identifier , (subscript_expression "puVar7[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" identifier (argument_list "(iVar2,(uint)(uVar3 < puVar7[4]))" ( identifier , (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < puVar7[4])" ( (binary_expression "uVar3 < puVar7[4]" identifier < (subscript_expression "puVar7[4]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(uVar3 < puVar7[4]))" ( (binary_expression "iVar2 - (uint)(uVar3 < puVar7[4])" identifier - (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < puVar7[4])" ( (binary_expression "uVar3 < puVar7[4]" identifier < (subscript_expression "puVar7[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00196a00;" goto statement_identifier ;)) (if_statement "if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }" if (parenthesized_expression "(puVar9[3] == 0)" ( (binary_expression "puVar9[3] == 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          puVar7 = puVar9;\n        }" { (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) })) (expression_statement "bVar14 = puVar9[3] != 0;" (assignment_expression "bVar14 = puVar9[3] != 0" identifier = (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal)) ;) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" identifier = identifier) ;) (goto_statement "goto LAB_001968c5;" goto statement_identifier ;) })) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;) })) (if_statement "if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" if (parenthesized_expression "(*(uint **)(param_1 + 0xa0) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0xa0) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa0)" * (cast_expression "(uint **)(param_1 + 0xa0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" { (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_001e8400(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e8400(puVar9)" identifier = (cast_expression "(uint *)FUN_001e8400(puVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e8400(puVar9)" identifier (argument_list "(puVar9)" ( identifier ))))) ;) (expression_statement "puVar11 = (undefined4 *)auStack_4c;" (assignment_expression "puVar11 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar2 = puVar7[5] - local_40;" (assignment_expression "iVar2 = puVar7[5] - local_40" identifier = (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" if (parenthesized_expression "((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" ( (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" ( (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" identifier (argument_list "(puVar7[5],local_40)" ( (subscript_expression "puVar7[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" ( identifier , (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" identifier - (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)) )) (compound_statement "{\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" { (labeled_statement "LAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);" statement_identifier : (expression_statement "FUN_001989e0(local_24,local_2c,local_30);" (call_expression "FUN_001989e0(local_24,local_2c,local_30)" identifier (argument_list "(local_24,local_2c,local_30)" ( identifier , identifier , identifier ))) ;)) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" identifier = (subscript_expression "local_24[0]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = local_2c;" (assignment_expression "puVar8 = local_2c" identifier = identifier) ;) (goto_statement "goto LAB_001969b3;" goto statement_identifier ;) })) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" identifier = identifier) ;) (expression_statement "puVar13 = puVar9;" (assignment_expression "puVar13 = puVar9" identifier = identifier) ;) (if_statement "if (puVar7[3] == 0) goto LAB_0019691a;" if (parenthesized_expression "(puVar7[3] == 0)" ( (binary_expression "puVar7[3] == 0" (subscript_expression "puVar7[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;)) (goto_statement "goto LAB_001969b7;" goto statement_identifier ;) })) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (labeled_statement "LAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;" statement_identifier : (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }))) (if_statement "if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" if (parenthesized_expression "((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14))" ( (binary_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)" (parenthesized_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18))" ( (binary_expression "puVar7 == *(uint **)((int)puVar12 + 0x18)" identifier == (pointer_expression "*(uint **)((int)puVar12 + 0x18)" * (cast_expression "(uint **)((int)puVar12 + 0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + 0x18)" ( (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) || (parenthesized_expression "(bVar14)" ( identifier ))) )) (compound_statement "{\n    uVar10 = 1;\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" else (compound_statement "{\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" { (expression_statement "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];" (assignment_expression "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5]" identifier = (binary_expression "*(int *)((int)puVar12 + 0xc) - puVar7[5]" (pointer_expression "*(int *)((int)puVar12 + 0xc)" * (cast_expression "(int *)((int)puVar12 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0xc)" ( (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);" (assignment_expression "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" identifier = (call_expression "(uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" ( (binary_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])))" ( (binary_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (call_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5])" identifier (argument_list "(*(int *)((int)puVar12 + 0xc),puVar7[5])" ( (pointer_expression "*(int *)((int)puVar12 + 0xc)" * (cast_expression "(int *)((int)puVar12 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0xc)" ( (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (subscript_expression "puVar7[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" identifier (argument_list "(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( identifier , (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" ( (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" * (cast_expression "(uint *)((int)puVar12 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 8)" ( (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (subscript_expression "puVar7[4]" identifier [ number_literal ])) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( (binary_expression "iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" identifier - (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" ( (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" * (cast_expression "(uint *)((int)puVar12 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 8)" ( (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (subscript_expression "puVar7[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )))) ;) }))) (expression_statement "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);" (assignment_expression "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18)" (pointer_expression "*(undefined4 *)((int)puVar12 + -4)" * (cast_expression "(undefined4 *)((int)puVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -4)" ( (binary_expression "(int)puVar12 + -4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)puVar12 + 0x18)" * (cast_expression "(undefined4 *)((int)puVar12 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x18)" ( (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint **)((int)puVar12 + -8) = puVar7;" (assignment_expression "*(uint **)((int)puVar12 + -8) = puVar7" (pointer_expression "*(uint **)((int)puVar12 + -8)" * (cast_expression "(uint **)((int)puVar12 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -8)" ( (binary_expression "(int)puVar12 + -8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)puVar12 + -0xc) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0xc) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0xc)" * (cast_expression "(uint **)((int)puVar12 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -0xc)" ( (binary_expression "(int)puVar12 + -0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)((int)puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)((int)puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)((int)puVar12 + -0x10)" * (cast_expression "(uint *)((int)puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x10)" ( (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x14)" ( (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e84e0();" (call_expression "FUN_001e84e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;" (assignment_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" * (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" * (cast_expression "(int *)((int)puVar12 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x50)" ( (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) = (binary_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" * (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" * (cast_expression "(int *)((int)puVar12 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x50)" ( (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (labeled_statement "LAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);" statement_identifier : (expression_statement "uVar10 = *(uint *)((int)puVar12 + 0x10);" (assignment_expression "uVar10 = *(uint *)((int)puVar12 + 0x10)" identifier = (pointer_expression "*(uint *)((int)puVar12 + 0x10)" * (cast_expression "(uint *)((int)puVar12 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x10)" ( (binary_expression "(int)puVar12 + 0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[6] = uVar10;" (assignment_expression "puVar9[6] = uVar10" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[7] = *(uint *)((int)puVar12 + 0x14);" (assignment_expression "puVar9[7] = *(uint *)((int)puVar12 + 0x14)" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)puVar12 + 0x14)" * (cast_expression "(uint *)((int)puVar12 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x14)" ( (binary_expression "(int)puVar12 + 0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void read_symbols(Archive * this, off_t off) */\n\nvoid __thiscall gold::Archive::read_symbols(Archive *this,off_t off)\n\n{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  uint uVar6;\n  int iVar7;\n  _Rb_tree_color _Var8;\n  int iVar9;\n  Object *pOVar10;\n  _Base_ptr p_Var11;\n  _Rb_tree_node_base *p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  _Rb_tree_node_base *p_Var14;\n  bool bVar15;\n  _Rb_tree_node_base *local_24;\n  _Rb_tree_node_base *p_Stack_20;\n  \n  _Var8 = (_Rb_tree_color)off;\n  iVar9 = off._4_4_;\n  pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0);\n  if (pOVar10 == (Object *)0x0) {\n    return;\n  }\n  p_Var11 = (_Base_ptr)operator_new(0x40);\n  p_Var11->_M_color = _S_red;\n  p_Var11->_M_parent = (_Base_ptr)0x0;\n  p_Var11->_M_right = (_Base_ptr)0x0;\n  p_Var11[1]._M_left = (_Base_ptr)0x0;\n  p_Var11[2]._M_color = _S_red;\n  p_Var11[2]._M_left = (_Base_ptr)0x0;\n  p_Var11[3]._M_parent = (_Base_ptr)0x0;\n  (*pOVar10->_vptr_Object[8])(pOVar10,p_Var11);\n  p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n  p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  p_Var12 = &p_Var2->_M_header;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\nLAB_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var13[1]._M_color = (_Rb_tree_color)off;\n    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }\n  }\n  else {\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }\nLAB_001968c7:\n  if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {\n    bVar15 = true;\n  }\n  else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }\n  std::_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);\n  psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  p_Var14 = p_Var13;\nLAB_001968f4:\n  p_Var14[2]._M_color = _S_red;\n  p_Var14[1]._M_left = (_Base_ptr)pOVar10;\n  p_Var14[1]._M_right = p_Var11;\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Archive::read_symbols(Archive *this,off_t off)\n\n{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  uint uVar6;\n  int iVar7;\n  _Rb_tree_color _Var8;\n  int iVar9;\n  Object *pOVar10;\n  _Base_ptr p_Var11;\n  _Rb_tree_node_base *p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  _Rb_tree_node_base *p_Var14;\n  bool bVar15;\n  _Rb_tree_node_base *local_24;\n  _Rb_tree_node_base *p_Stack_20;\n  \n  _Var8 = (_Rb_tree_color)off;\n  iVar9 = off._4_4_;\n  pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0);\n  if (pOVar10 == (Object *)0x0) {\n    return;\n  }\n  p_Var11 = (_Base_ptr)operator_new(0x40);\n  p_Var11->_M_color = _S_red;\n  p_Var11->_M_parent = (_Base_ptr)0x0;\n  p_Var11->_M_right = (_Base_ptr)0x0;\n  p_Var11[1]._M_left = (_Base_ptr)0x0;\n  p_Var11[2]._M_color = _S_red;\n  p_Var11[2]._M_left = (_Base_ptr)0x0;\n  p_Var11[3]._M_parent = (_Base_ptr)0x0;\n  (*pOVar10->_vptr_Object[8])(pOVar10,p_Var11);\n  p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n  p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  p_Var12 = &p_Var2->_M_header;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\nLAB_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var13[1]._M_color = (_Rb_tree_color)off;\n    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }\n  }\n  else {\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }\nLAB_001968c7:\n  if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {\n    bVar15 = true;\n  }\n  else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }\n  std::_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);\n  psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  p_Var14 = p_Var13;\nLAB_001968f4:\n  p_Var14[2]._M_color = _S_red;\n  p_Var14[1]._M_left = (_Base_ptr)pOVar10;\n  p_Var14[1]._M_right = p_Var11;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "read_symbols(Archive *this,off_t off)" identifier (parameter_list "(Archive *this,off_t off)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t off" type_identifier identifier) ))) (compound_statement "{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  size_t *psVar3;\n  _Rb_tree_node_base *p_Var4;\n  _Base_ptr p_Var5;\n  uint uVar6;\n  int iVar7;\n  _Rb_tree_color _Var8;\n  int iVar9;\n  Object *pOVar10;\n  _Base_ptr p_Var11;\n  _Rb_tree_node_base *p_Var12;\n  _Rb_tree_node_base *p_Var13;\n  _Rb_tree_node_base *p_Var14;\n  bool bVar15;\n  _Rb_tree_node_base *local_24;\n  _Rb_tree_node_base *p_Stack_20;\n  \n  _Var8 = (_Rb_tree_color)off;\n  iVar9 = off._4_4_;\n  pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0);\n  if (pOVar10 == (Object *)0x0) {\n    return;\n  }\n  p_Var11 = (_Base_ptr)operator_new(0x40);\n  p_Var11->_M_color = _S_red;\n  p_Var11->_M_parent = (_Base_ptr)0x0;\n  p_Var11->_M_right = (_Base_ptr)0x0;\n  p_Var11[1]._M_left = (_Base_ptr)0x0;\n  p_Var11[2]._M_color = _S_red;\n  p_Var11[2]._M_left = (_Base_ptr)0x0;\n  p_Var11[3]._M_parent = (_Base_ptr)0x0;\n  (*pOVar10->_vptr_Object[8])(pOVar10,p_Var11);\n  p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;\n  p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  p_Var12 = &p_Var2->_M_header;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\nLAB_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var13[1]._M_color = (_Rb_tree_color)off;\n    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }\n  }\n  else {\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }\nLAB_001968c7:\n  if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {\n    bVar15 = true;\n  }\n  else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }\n  std::_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);\n  psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;\n  *psVar3 = *psVar3 + 1;\n  p_Var14 = p_Var13;\nLAB_001968f4:\n  p_Var14[2]._M_color = _S_red;\n  p_Var14[1]._M_left = (_Base_ptr)pOVar10;\n  p_Var14[1]._M_right = p_Var11;\n  return;\n}" { (declaration "_Base_ptr *pp_Var1;" type_identifier (pointer_declarator "*pp_Var1" * identifier) ;) (declaration "_Rb_tree_header *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "size_t *psVar3;" primitive_type (pointer_declarator "*psVar3" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "_Rb_tree_color _Var8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "Object *pOVar10;" type_identifier (pointer_declarator "*pOVar10" * identifier) ;) (declaration "_Base_ptr p_Var11;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var14;" type_identifier (pointer_declarator "*p_Var14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "_Rb_tree_node_base *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "_Rb_tree_node_base *p_Stack_20;" type_identifier (pointer_declarator "*p_Stack_20" * identifier) ;) (expression_statement "_Var8 = (_Rb_tree_color)off;" (assignment_expression "_Var8 = (_Rb_tree_color)off" identifier = (cast_expression "(_Rb_tree_color)off" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "iVar9 = off._4_4_;" (assignment_expression "iVar9 = off._4_4_" identifier = (field_expression "off._4_4_" identifier . field_identifier)) ;) (expression_statement "pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0);" (assignment_expression "pOVar10 = get_elf_object_for_member(this,off,(bool *)0x0)" identifier = (call_expression "get_elf_object_for_member(this,off,(bool *)0x0)" identifier (argument_list "(this,off,(bool *)0x0)" ( identifier , identifier , (cast_expression "(bool *)0x0" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pOVar10 == (Object *)0x0) {\n    return;\n  }" if (parenthesized_expression "(pOVar10 == (Object *)0x0)" ( (binary_expression "pOVar10 == (Object *)0x0" identifier == (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "p_Var11 = (_Base_ptr)operator_new(0x40);" (assignment_expression "p_Var11 = (_Base_ptr)operator_new(0x40)" identifier = (cast_expression "(_Base_ptr)operator_new(0x40)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "p_Var11->_M_color = _S_red;" (assignment_expression "p_Var11->_M_color = _S_red" (field_expression "p_Var11->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var11->_M_parent = (_Base_ptr)0x0;" (assignment_expression "p_Var11->_M_parent = (_Base_ptr)0x0" (field_expression "p_Var11->_M_parent" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var11->_M_right = (_Base_ptr)0x0;" (assignment_expression "p_Var11->_M_right = (_Base_ptr)0x0" (field_expression "p_Var11->_M_right" identifier -> field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var11[1]._M_left = (_Base_ptr)0x0;" (assignment_expression "p_Var11[1]._M_left = (_Base_ptr)0x0" (field_expression "p_Var11[1]._M_left" (subscript_expression "p_Var11[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var11[2]._M_color = _S_red;" (assignment_expression "p_Var11[2]._M_color = _S_red" (field_expression "p_Var11[2]._M_color" (subscript_expression "p_Var11[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "p_Var11[2]._M_left = (_Base_ptr)0x0;" (assignment_expression "p_Var11[2]._M_left = (_Base_ptr)0x0" (field_expression "p_Var11[2]._M_left" (subscript_expression "p_Var11[2]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var11[3]._M_parent = (_Base_ptr)0x0;" (assignment_expression "p_Var11[3]._M_parent = (_Base_ptr)0x0" (field_expression "p_Var11[3]._M_parent" (subscript_expression "p_Var11[3]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "(*pOVar10->_vptr_Object[8])(pOVar10,p_Var11);" (call_expression "(*pOVar10->_vptr_Object[8])(pOVar10,p_Var11)" (parenthesized_expression "(*pOVar10->_vptr_Object[8])" ( (pointer_expression "*pOVar10->_vptr_Object[8]" * (subscript_expression "pOVar10->_vptr_Object[8]" (field_expression "pOVar10->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar10,p_Var11)" ( identifier , identifier ))) ;) (expression_statement "p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var2 = &(this->members_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->members_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var12 = &p_Var2->_M_header;" (assignment_expression "p_Var12 = &p_Var2->_M_header" identifier = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var4 == (_Rb_tree_node_base *)0x0) {\nLAB_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var13[1]._M_color = (_Rb_tree_color)off;\n    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }\n  }\n  else {\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }" if (parenthesized_expression "(p_Var4 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var4 == (_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_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var13[1]._M_color = (_Rb_tree_color)off;\n    p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }\n  }" { (labeled_statement "LAB_00196920:\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);" statement_identifier : (expression_statement "p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);" (assignment_expression "p_Var13 = (_Rb_tree_node_base *)operator_new(0x24)" identifier = (cast_expression "(_Rb_tree_node_base *)operator_new(0x24)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "p_Var13[1]._M_left = (_Base_ptr)0x0;" (assignment_expression "p_Var13[1]._M_left = (_Base_ptr)0x0" (field_expression "p_Var13[1]._M_left" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var13[1]._M_color = (_Rb_tree_color)off;" (assignment_expression "p_Var13[1]._M_color = (_Rb_tree_color)off" (field_expression "p_Var13[1]._M_color" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Rb_tree_color)off" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "p_Var13[1]._M_parent = (_Base_ptr)off._4_4_;" (assignment_expression "p_Var13[1]._M_parent = (_Base_ptr)off._4_4_" (field_expression "p_Var13[1]._M_parent" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)off._4_4_" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "off._4_4_" identifier . field_identifier))) ;) (expression_statement "p_Var13[1]._M_right = (_Base_ptr)0x0;" (assignment_expression "p_Var13[1]._M_right = (_Base_ptr)0x0" (field_expression "p_Var13[1]._M_right" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var13[2]._M_color = _S_red;" (assignment_expression "p_Var13[2]._M_color = _S_red" (field_expression "p_Var13[2]._M_color" (subscript_expression "p_Var13[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)) {\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }\n    else {\nLAB_0019691a:\n      bVar15 = false;\n    }" if (parenthesized_expression "(((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0))" ( (binary_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||\n       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)" (parenthesized_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0)" ( (binary_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) == number_literal) )) || (parenthesized_expression "(p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0)" ( (comma_expression "p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,\n       uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0" (assignment_expression "p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right" identifier = (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) , (comma_expression "uVar6 = (uint)(p_Var12[1]._M_color < _Var8), iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0" (assignment_expression "uVar6 = (uint)(p_Var12[1]._M_color < _Var8)" identifier = (call_expression "(uint)(p_Var12[1]._M_color < _Var8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var12[1]._M_color < _Var8)" ( (binary_expression "p_Var12[1]._M_color < _Var8" (field_expression "p_Var12[1]._M_color" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier) < identifier) )))) , (comma_expression "iVar7 = (int)p_Var12[1]._M_parent - iVar9,\n       (SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar7 = (int)p_Var12[1]._M_parent - iVar9" identifier = (binary_expression "(int)p_Var12[1]._M_parent - iVar9" (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) - identifier)) , (binary_expression "(SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n       (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4((int)p_Var12[1]._M_parent,iVar9)" identifier (argument_list "((int)p_Var12[1]._M_parent,iVar9)" ( (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n      std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));\nLAB_001969b3:\n      p_Var14 = p_Stack_20;\n      p_Var12 = local_24;\n      if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }\nLAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;\n      p_Var12 = p_Var14;\n    }" { (ERROR "std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::" (comma_expression "std::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std" identifier (ERROR "::\n      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>" : : (comma_expression "_Rb_tree<long_long_int,_std" (binary_expression "_Rb_tree<long_long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : identifier >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (binary_expression "Archive_member>_>,_std" (binary_expression "Archive_member>_" identifier > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<long_long_int>,_std" (binary_expression "less<long_long_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : :) (expression_statement "Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1));" (binary_expression "Archive_member>_>_>\n      ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1))" (binary_expression "Archive_member>_>_" (binary_expression "Archive_member>_" identifier > identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1))" identifier (argument_list "(&(this->members_)._M_t,(key_type_conflict *)(p_Var13 + 1))" ( (pointer_expression "&(this->members_)._M_t" & (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(key_type_conflict *)(p_Var13 + 1)" ( (type_descriptor "key_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) ))) )))) ;) (labeled_statement "LAB_001969b3:\n      p_Var14 = p_Stack_20;" statement_identifier : (expression_statement "p_Var14 = p_Stack_20;" (assignment_expression "p_Var14 = p_Stack_20" identifier = identifier) ;)) (expression_statement "p_Var12 = local_24;" (assignment_expression "p_Var12 = local_24" identifier = identifier) ;) (if_statement "if (p_Stack_20 == (_Rb_tree_node_base *)0x0) {\nLAB_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }" if (parenthesized_expression "(p_Stack_20 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Stack_20 == (_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_001969ca:\n        operator_delete(p_Var13);\n        p_Var14 = p_Var12;\n        goto LAB_001968f4;\n      }" { (labeled_statement "LAB_001969ca:\n        operator_delete(p_Var13);" statement_identifier : (expression_statement "operator_delete(p_Var13);" (call_expression "operator_delete(p_Var13)" identifier (argument_list "(p_Var13)" ( identifier ))) ;)) (expression_statement "p_Var14 = p_Var12;" (assignment_expression "p_Var14 = p_Var12" identifier = identifier) ;) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;) })) (labeled_statement "LAB_001969b7:\n      bVar15 = local_24 != (_Rb_tree_node_base *)0x0;" statement_identifier : (expression_statement "bVar15 = local_24 != (_Rb_tree_node_base *)0x0;" (assignment_expression "bVar15 = local_24 != (_Rb_tree_node_base *)0x0" identifier = (binary_expression "local_24 != (_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 "p_Var12 = p_Var14;" (assignment_expression "p_Var12 = p_Var14" identifier = identifier) ;) }) (else_clause "else {\nLAB_0019691a:\n      bVar15 = false;\n    }" else (compound_statement "{\nLAB_0019691a:\n      bVar15 = false;\n    }" { (labeled_statement "LAB_0019691a:\n      bVar15 = false;" statement_identifier : (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;)) }))) }) (else_clause "else {\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }" else (compound_statement "{\n    do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);\nLAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;\n    uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);\n    iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;\n    if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;\n    p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);\n    p_Var13[1]._M_left = (_Base_ptr)0x0;\n    p_Var4 = p_Var13 + 1;\n    p_Var4->_M_color = (_Rb_tree_color)off;\n    p_Var4->_M_parent = (_Base_ptr)off._4_4_;\n    p_Var5 = p_Var14[1]._M_parent;\n    p_Var13[1]._M_right = (_Base_ptr)0x0;\n    p_Var13[2]._M_color = _S_red;\n    uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);\n    p_Var12 = p_Var14;\n    if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }\n    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar15 = true;\n  }" { (do_statement "do {\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    } while (p_Var14->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n      while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }\n      p_Var4 = p_Var14->_M_left;\n      p_Var12 = p_Var14;\n    }" { (while_statement "while (p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0) {\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }" while (parenthesized_expression "(p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0)" ( (comma_expression "p_Var14 = p_Var4, uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0" (assignment_expression "p_Var14 = p_Var4" identifier = identifier) , (comma_expression "uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off),\n            iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0" (assignment_expression "uVar6 = (uint)(p_Var14[1]._M_color < (_Rb_tree_color)off)" identifier = (call_expression "(uint)(p_Var14[1]._M_color < (_Rb_tree_color)off)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var14[1]._M_color < (_Rb_tree_color)off)" ( (binary_expression "p_Var14[1]._M_color < (_Rb_tree_color)off" (field_expression "p_Var14[1]._M_color" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier) < (cast_expression "(_Rb_tree_color)off" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) )))) , (comma_expression "iVar7 = (int)p_Var14[1]._M_parent - off._4_4_,\n            (SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar7 = (int)p_Var14[1]._M_parent - off._4_4_" identifier = (binary_expression "(int)p_Var14[1]._M_parent - off._4_4_" (cast_expression "(int)p_Var14[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var14[1]._M_parent" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) - (field_expression "off._4_4_" identifier . field_identifier))) , (binary_expression "(SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)) !=\n            (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4((int)p_Var14[1]._M_parent,off._4_4_) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4((int)p_Var14[1]._M_parent,off._4_4_)" identifier (argument_list "((int)p_Var14[1]._M_parent,off._4_4_)" ( (cast_expression "(int)p_Var14[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var14[1]._M_parent" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) , (field_expression "off._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal))))) )) (compound_statement "{\n        pp_Var1 = &p_Var14->_M_right;\n        p_Var4 = *pp_Var1;\n        p_Var14 = p_Var12;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;\n      }" { (expression_statement "pp_Var1 = &p_Var14->_M_right;" (assignment_expression "pp_Var1 = &p_Var14->_M_right" identifier = (pointer_expression "&p_Var14->_M_right" & (field_expression "p_Var14->_M_right" identifier -> field_identifier))) ;) (expression_statement "p_Var4 = *pp_Var1;" (assignment_expression "p_Var4 = *pp_Var1" identifier = (pointer_expression "*pp_Var1" * identifier)) ;) (expression_statement "p_Var14 = p_Var12;" (assignment_expression "p_Var14 = p_Var12" identifier = identifier) ;) (if_statement "if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001967a0;" if (parenthesized_expression "(*pp_Var1 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var1 == (_Base_ptr)0x0" (pointer_expression "*pp_Var1" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_001967a0;" goto statement_identifier ;)) })) (expression_statement "p_Var4 = p_Var14->_M_left;" (assignment_expression "p_Var4 = p_Var14->_M_left" identifier = (field_expression "p_Var14->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var12 = p_Var14;" (assignment_expression "p_Var12 = p_Var14" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var14->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var14->_M_left != (_Base_ptr)0x0" (field_expression "p_Var14->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_001967a0:\n    if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;" statement_identifier : (if_statement "if (p_Var2 == (_Rb_tree_header *)p_Var14) goto LAB_00196920;" if (parenthesized_expression "(p_Var2 == (_Rb_tree_header *)p_Var14)" ( (binary_expression "p_Var2 == (_Rb_tree_header *)p_Var14" identifier == (cast_expression "(_Rb_tree_header *)p_Var14" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_00196920;" goto statement_identifier ;))) (expression_statement "uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color);" (assignment_expression "uVar6 = (uint)((_Rb_tree_color)off < p_Var14[1]._M_color)" identifier = (call_expression "(uint)((_Rb_tree_color)off < p_Var14[1]._M_color)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((_Rb_tree_color)off < p_Var14[1]._M_color)" ( (binary_expression "(_Rb_tree_color)off < p_Var14[1]._M_color" (cast_expression "(_Rb_tree_color)off" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier) < (field_expression "p_Var14[1]._M_color" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) )))) ;) (expression_statement "iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent;" (assignment_expression "iVar7 = off._4_4_ - (int)p_Var14[1]._M_parent" identifier = (binary_expression "off._4_4_ - (int)p_Var14[1]._M_parent" (field_expression "off._4_4_" identifier . field_identifier) - (cast_expression "(int)p_Var14[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var14[1]._M_parent" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)))) ;) (if_statement "if ((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0) goto LAB_001968f4;" if (parenthesized_expression "((SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0)" ( (binary_expression "(SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n        (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(off._4_4_,(int)p_Var14[1]._M_parent)" identifier (argument_list "(off._4_4_,(int)p_Var14[1]._M_parent)" ( (field_expression "off._4_4_" identifier . field_identifier) , (cast_expression "(int)p_Var14[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var14[1]._M_parent" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;)) (expression_statement "p_Var13 = (_Rb_tree_node_base *)operator_new(0x24);" (assignment_expression "p_Var13 = (_Rb_tree_node_base *)operator_new(0x24)" identifier = (cast_expression "(_Rb_tree_node_base *)operator_new(0x24)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "p_Var13[1]._M_left = (_Base_ptr)0x0;" (assignment_expression "p_Var13[1]._M_left = (_Base_ptr)0x0" (field_expression "p_Var13[1]._M_left" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var4 = p_Var13 + 1;" (assignment_expression "p_Var4 = p_Var13 + 1" identifier = (binary_expression "p_Var13 + 1" identifier + number_literal)) ;) (expression_statement "p_Var4->_M_color = (_Rb_tree_color)off;" (assignment_expression "p_Var4->_M_color = (_Rb_tree_color)off" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = (cast_expression "(_Rb_tree_color)off" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ;) (expression_statement "p_Var4->_M_parent = (_Base_ptr)off._4_4_;" (assignment_expression "p_Var4->_M_parent = (_Base_ptr)off._4_4_" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = (cast_expression "(_Base_ptr)off._4_4_" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "off._4_4_" identifier . field_identifier))) ;) (expression_statement "p_Var5 = p_Var14[1]._M_parent;" (assignment_expression "p_Var5 = p_Var14[1]._M_parent" identifier = (field_expression "p_Var14[1]._M_parent" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var13[1]._M_right = (_Base_ptr)0x0;" (assignment_expression "p_Var13[1]._M_right = (_Base_ptr)0x0" (field_expression "p_Var13[1]._M_right" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "p_Var13[2]._M_color = _S_red;" (assignment_expression "p_Var13[2]._M_color = _S_red" (field_expression "p_Var13[2]._M_color" (subscript_expression "p_Var13[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "uVar6 = (uint)(_Var8 < p_Var14[1]._M_color);" (assignment_expression "uVar6 = (uint)(_Var8 < p_Var14[1]._M_color)" identifier = (call_expression "(uint)(_Var8 < p_Var14[1]._M_color)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(_Var8 < p_Var14[1]._M_color)" ( (binary_expression "_Var8 < p_Var14[1]._M_color" identifier < (field_expression "p_Var14[1]._M_color" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier)) )))) ;) (expression_statement "p_Var12 = p_Var14;" (assignment_expression "p_Var12 = p_Var14" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0) {\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }" if (parenthesized_expression "((SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)) ==\n        (int)((iVar9 - (int)p_Var5) - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6))" ( (binary_expression "SBORROW4(iVar9,(int)p_Var5) != SBORROW4(iVar9 - (int)p_Var5,uVar6)" (call_expression "SBORROW4(iVar9,(int)p_Var5)" identifier (argument_list "(iVar9,(int)p_Var5)" ( identifier , (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) ))) != (call_expression "SBORROW4(iVar9 - (int)p_Var5,uVar6)" identifier (argument_list "(iVar9 - (int)p_Var5,uVar6)" ( (binary_expression "iVar9 - (int)p_Var5" identifier - (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) )) == (binary_expression "(int)((iVar9 - (int)p_Var5) - uVar6) < 0" (cast_expression "(int)((iVar9 - (int)p_Var5) - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar9 - (int)p_Var5) - uVar6)" ( (binary_expression "(iVar9 - (int)p_Var5) - uVar6" (parenthesized_expression "(iVar9 - (int)p_Var5)" ( (binary_expression "iVar9 - (int)p_Var5" identifier - (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier) ))) < number_literal)) )) (compound_statement "{\n      uVar6 = (uint)(p_Var14[1]._M_color < _Var8);\n      if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;\n      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }\n      goto LAB_0019691a;\n    }" { (expression_statement "uVar6 = (uint)(p_Var14[1]._M_color < _Var8);" (assignment_expression "uVar6 = (uint)(p_Var14[1]._M_color < _Var8)" identifier = (call_expression "(uint)(p_Var14[1]._M_color < _Var8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var14[1]._M_color < _Var8)" ( (binary_expression "p_Var14[1]._M_color < _Var8" (field_expression "p_Var14[1]._M_color" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier) < identifier) )))) ;) (if_statement "if ((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0) goto LAB_001969ca;" if (parenthesized_expression "((SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0)" ( (binary_expression "(SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)) ==\n          (int)(((int)p_Var5 - iVar9) - uVar6) < 0" (parenthesized_expression "(SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6))" ( (binary_expression "SBORROW4((int)p_Var5,iVar9) != SBORROW4((int)p_Var5 - iVar9,uVar6)" (call_expression "SBORROW4((int)p_Var5,iVar9)" identifier (argument_list "((int)p_Var5,iVar9)" ( (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) != (call_expression "SBORROW4((int)p_Var5 - iVar9,uVar6)" identifier (argument_list "((int)p_Var5 - iVar9,uVar6)" ( (binary_expression "(int)p_Var5 - iVar9" (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier )))) )) == (binary_expression "(int)(((int)p_Var5 - iVar9) - uVar6) < 0" (cast_expression "(int)(((int)p_Var5 - iVar9) - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(((int)p_Var5 - iVar9) - uVar6)" ( (binary_expression "((int)p_Var5 - iVar9) - uVar6" (parenthesized_expression "((int)p_Var5 - iVar9)" ( (binary_expression "(int)p_Var5 - iVar9" (cast_expression "(int)p_Var5" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )) - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_001969ca;" goto statement_identifier ;)) (if_statement "if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14) {\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }" if (parenthesized_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14)" ( (binary_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != p_Var14" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n        p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var14);\n        uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n        iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n        if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;\n        if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }\n        bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;\n        goto LAB_001968c7;\n      }" { (ERROR "p_Var12 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var12 = (_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_increment(p_Var14);" (call_expression "_Rb_tree_increment(p_Var14)" identifier (argument_list "(p_Var14)" ( identifier ))) ;) (expression_statement "uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);" (assignment_expression "uVar6 = (uint)(_Var8 < p_Var12[1]._M_color)" identifier = (call_expression "(uint)(_Var8 < p_Var12[1]._M_color)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(_Var8 < p_Var12[1]._M_color)" ( (binary_expression "_Var8 < p_Var12[1]._M_color" identifier < (field_expression "p_Var12[1]._M_color" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) )))) ;) (expression_statement "iVar7 = iVar9 - (int)p_Var12[1]._M_parent;" (assignment_expression "iVar7 = iVar9 - (int)p_Var12[1]._M_parent" identifier = (binary_expression "iVar9 - (int)p_Var12[1]._M_parent" identifier - (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)))) ;) (if_statement "if ((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0) goto LAB_00196a00;" if (parenthesized_expression "((SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) ==\n            (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(iVar9,(int)p_Var12[1]._M_parent)" identifier (argument_list "(iVar9,(int)p_Var12[1]._M_parent)" ( identifier , (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_00196a00;" goto statement_identifier ;)) (if_statement "if (p_Var14->_M_right == (_Base_ptr)0x0) {\n          p_Var12 = p_Var14;\n        }" if (parenthesized_expression "(p_Var14->_M_right == (_Base_ptr)0x0)" ( (binary_expression "p_Var14->_M_right == (_Base_ptr)0x0" (field_expression "p_Var14->_M_right" identifier -> field_identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var12 = p_Var14;\n        }" { (expression_statement "p_Var12 = p_Var14;" (assignment_expression "p_Var12 = p_Var14" identifier = identifier) ;) })) (expression_statement "bVar15 = p_Var14->_M_right != (_Base_ptr)0x0;" (assignment_expression "bVar15 = p_Var14->_M_right != (_Base_ptr)0x0" identifier = (binary_expression "p_Var14->_M_right != (_Base_ptr)0x0" (field_expression "p_Var14->_M_right" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal))) ;) (goto_statement "goto LAB_001968c7;" goto statement_identifier ;) })) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;) })) (if_statement "if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14) {\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" if (parenthesized_expression "((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14)" ( (binary_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != p_Var14" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n      p_Var12 = (_Rb_tree_node_base *)std::_Rb_tree_decrement(p_Var14);\n      uVar6 = (uint)(p_Var12[1]._M_color < _Var8);\n      iVar7 = (int)p_Var12[1]._M_parent - iVar9;\n      if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }\n      local_24 = p_Var14;\n      if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" { (ERROR "p_Var12 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var12 = (_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_Var14);" (call_expression "_Rb_tree_decrement(p_Var14)" identifier (argument_list "(p_Var14)" ( identifier ))) ;) (expression_statement "uVar6 = (uint)(p_Var12[1]._M_color < _Var8);" (assignment_expression "uVar6 = (uint)(p_Var12[1]._M_color < _Var8)" identifier = (call_expression "(uint)(p_Var12[1]._M_color < _Var8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var12[1]._M_color < _Var8)" ( (binary_expression "p_Var12[1]._M_color < _Var8" (field_expression "p_Var12[1]._M_color" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier) < identifier) )))) ;) (expression_statement "iVar7 = (int)p_Var12[1]._M_parent - iVar9;" (assignment_expression "iVar7 = (int)p_Var12[1]._M_parent - iVar9" identifier = (binary_expression "(int)p_Var12[1]._M_parent - iVar9" (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) - identifier)) ;) (if_statement "if ((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0) {\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }" if (parenthesized_expression "((SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0)" ( (binary_expression "(SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)) ==\n          (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4((int)p_Var12[1]._M_parent,iVar9) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4((int)p_Var12[1]._M_parent,iVar9)" identifier (argument_list "((int)p_Var12[1]._M_parent,iVar9)" ( (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) , identifier ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\nLAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);\n        goto LAB_001969b3;\n      }" { (labeled_statement "LAB_00196a00:\n        std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);" statement_identifier : (ERROR "std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std::_Select1st<std::pair<long_long_int_const,_gold::Archive_member>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::" (comma_expression "std::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>,_std" identifier (ERROR "::\n        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::Archive_member>" : : (comma_expression "_Rb_tree<long_long_int,_std" (binary_expression "_Rb_tree<long_long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : identifier >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : : (binary_expression "Archive_member>_>,_std" (binary_expression "Archive_member>_" identifier > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<long_long_int>,_std" (binary_expression "less<long_long_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_long_int_const" identifier < identifier) , identifier) : :) (expression_statement "Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4);" (binary_expression "Archive_member>_>_>\n        ::_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4)" (binary_expression "Archive_member>_>_" (binary_expression "Archive_member>_" identifier > identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_get_insert_unique_pos(&(this->members_)._M_t,(key_type_conflict *)p_Var4)" identifier (argument_list "(&(this->members_)._M_t,(key_type_conflict *)p_Var4)" ( (pointer_expression "&(this->members_)._M_t" & (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(key_type_conflict *)p_Var4" ( (type_descriptor "key_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (goto_statement "goto LAB_001969b3;" goto statement_identifier ;) })) (expression_statement "local_24 = p_Var14;" (assignment_expression "local_24 = p_Var14" identifier = identifier) ;) (if_statement "if (p_Var12->_M_right == (_Base_ptr)0x0) goto LAB_0019691a;" if (parenthesized_expression "(p_Var12->_M_right == (_Base_ptr)0x0)" ( (binary_expression "p_Var12->_M_right == (_Base_ptr)0x0" (field_expression "p_Var12->_M_right" identifier -> field_identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;)) (goto_statement "goto LAB_001969b7;" goto statement_identifier ;) })) (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" identifier = true) ;) }))) (labeled_statement "LAB_001968c7:\n  if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {\n    bVar15 = true;\n  }\n  else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }" statement_identifier : (if_statement "if (((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)) {\n    bVar15 = true;\n  }\n  else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }" if (parenthesized_expression "(((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15))" ( (binary_expression "((_Rb_tree_header *)p_Var12 == p_Var2) || (bVar15)" (parenthesized_expression "((_Rb_tree_header *)p_Var12 == p_Var2)" ( (binary_expression "(_Rb_tree_header *)p_Var12 == p_Var2" (cast_expression "(_Rb_tree_header *)p_Var12" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) || (parenthesized_expression "(bVar15)" ( identifier ))) )) (compound_statement "{\n    bVar15 = true;\n  }" { (expression_statement "bVar15 = true;" (assignment_expression "bVar15 = true" identifier = true) ;) }) (else_clause "else {\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }" else (compound_statement "{\n    uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);\n    iVar7 = iVar9 - (int)p_Var12[1]._M_parent;\n    bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;\n  }" { (expression_statement "uVar6 = (uint)(_Var8 < p_Var12[1]._M_color);" (assignment_expression "uVar6 = (uint)(_Var8 < p_Var12[1]._M_color)" identifier = (call_expression "(uint)(_Var8 < p_Var12[1]._M_color)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(_Var8 < p_Var12[1]._M_color)" ( (binary_expression "_Var8 < p_Var12[1]._M_color" identifier < (field_expression "p_Var12[1]._M_color" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) )))) ;) (expression_statement "iVar7 = iVar9 - (int)p_Var12[1]._M_parent;" (assignment_expression "iVar7 = iVar9 - (int)p_Var12[1]._M_parent" identifier = (binary_expression "iVar9 - (int)p_Var12[1]._M_parent" identifier - (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)))) ;) (expression_statement "bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0;" (assignment_expression "bVar15 = (SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0" identifier = (binary_expression "(SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)) !=\n             (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(iVar9,(int)p_Var12[1]._M_parent) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(iVar9,(int)p_Var12[1]._M_parent)" identifier (argument_list "(iVar9,(int)p_Var12[1]._M_parent)" ( identifier , (cast_expression "(int)p_Var12[1]._M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var12[1]._M_parent" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier)) ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal))) ;) })))) (labeled_statement "std::_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);" statement_identifier : (ERROR ":" :) (expression_statement "_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar15,p_Var13,p_Var12,&p_Var2->_M_header)" identifier (argument_list "(bVar15,p_Var13,p_Var12,&p_Var2->_M_header)" ( identifier , identifier , identifier , (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;" (assignment_expression "psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" & (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(this->members_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->members_)._M_t._M_impl" (field_expression "(this->members_)._M_t" (parenthesized_expression "(this->members_)" ( (field_expression "this->members_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar3 = *psVar3 + 1;" (assignment_expression "*psVar3 = *psVar3 + 1" (pointer_expression "*psVar3" * identifier) = (binary_expression "*psVar3 + 1" (pointer_expression "*psVar3" * identifier) + number_literal)) ;) (expression_statement "p_Var14 = p_Var13;" (assignment_expression "p_Var14 = p_Var13" identifier = identifier) ;) (labeled_statement "LAB_001968f4:\n  p_Var14[2]._M_color = _S_red;" statement_identifier : (expression_statement "p_Var14[2]._M_color = _S_red;" (assignment_expression "p_Var14[2]._M_color = _S_red" (field_expression "p_Var14[2]._M_color" (subscript_expression "p_Var14[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;)) (expression_statement "p_Var14[1]._M_left = (_Base_ptr)pOVar10;" (assignment_expression "p_Var14[1]._M_left = (_Base_ptr)pOVar10" (field_expression "p_Var14[1]._M_left" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)pOVar10" ( (type_descriptor "_Base_ptr" type_identifier) ) identifier)) ;) (expression_statement "p_Var14[1]._M_right = p_Var11;" (assignment_expression "p_Var14[1]._M_right = p_Var11" (field_expression "p_Var14[1]._M_right" (subscript_expression "p_Var14[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001966d0(int param_1,uint param_2,uint param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}\n\n" (function_definition "void FUN_001966d0(int param_1,uint param_2,uint param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" primitive_type (function_declarator "FUN_001966d0(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined4 uStack_50;" type_identifier identifier ;) (declaration "undefined1 auStack_4c [8];" type_identifier (array_declarator "auStack_4c [8]" identifier [ number_literal ]) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined4 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "uint *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint *local_24 [4];" type_identifier (pointer_declarator "*local_24 [4]" * (array_declarator "local_24 [4]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1966d9;" (assignment_expression "uStack_14 = 0x1966d9" identifier = number_literal) ;) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" identifier = identifier) ;) (expression_statement "local_40 = param_3;" (assignment_expression "local_40 = param_3" identifier = identifier) ;) (expression_statement "uStack_50 = 0;" (assignment_expression "uStack_50 = 0" identifier = number_literal) ;) (expression_statement "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);" (assignment_expression "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3)" identifier = (cast_expression "(int *)FUN_00196220(param_1,param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00196220(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n    return;\n  }" if (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)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" identifier = identifier) ;) (expression_statement "puVar6 = (undefined4 *)FUN_001e5210(0x40);" (assignment_expression "puVar6 = (undefined4 *)FUN_001e5210(0x40)" identifier = (cast_expression "(undefined4 *)FUN_001e5210(0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[10] = 0;" (assignment_expression "puVar6[10] = 0" (subscript_expression "puVar6[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar6[0xd] = 0;" (assignment_expression "puVar6[0xd] = 0" (subscript_expression "puVar6[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6);" (call_expression "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6)" (parenthesized_expression "(**(code **)(*piVar5 + 0x20))" ( (pointer_expression "**(code **)(*piVar5 + 0x20)" * (pointer_expression "*(code **)(*piVar5 + 0x20)" * (cast_expression "(code **)(*piVar5 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x20)" ( (binary_expression "*piVar5 + 0x20" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar6)" ( identifier , identifier ))) ;) (expression_statement "local_34 = (uint *)(param_1 + 0x98);" (assignment_expression "local_34 = (uint *)(param_1 + 0x98)" identifier = (cast_expression "(uint *)(param_1 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) ;) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar7 = *(uint **)(param_1 + 0x9c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x9c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x9c)" * (cast_expression "(uint **)(param_1 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" identifier = identifier) ;) (if_statement "if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" if (parenthesized_expression "(*(uint **)(param_1 + 0x9c) == (uint *)0x0)" ( (binary_expression "*(uint **)(param_1 + 0x9c) == (uint *)0x0" (pointer_expression "*(uint **)(param_1 + 0x9c)" * (cast_expression "(uint **)(param_1 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }" { (labeled_statement "LAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);" statement_identifier : (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;)) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[4] = local_44;" (assignment_expression "puVar8[4] = local_44" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" if (parenthesized_expression "((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0))" ( (binary_expression "(*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" ( (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" * (cast_expression "(int *)(param_1 + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" ( (comma_expression "puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "puVar7 = *(uint **)(param_1 + 0xa4)" identifier = (pointer_expression "*(uint **)(param_1 + 0xa4)" * (cast_expression "(uint **)(param_1 + 0xa4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) ))))) , (comma_expression "iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar7[5] - local_40" identifier = (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" identifier [ number_literal ]) - identifier)) , (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" ( (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" identifier (argument_list "(puVar7[5],local_40)" ( (subscript_expression "puVar7[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" ( identifier , (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" identifier - (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)))) ))) )) (compound_statement "{\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" { (labeled_statement "LAB_0019691a:\n      bVar14 = false;" statement_identifier : (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;)) (goto_statement "goto LAB_001968c5;" goto statement_identifier ;) })) (expression_statement "local_30 = puVar8;" (assignment_expression "local_30 = puVar8" identifier = identifier) ;) (expression_statement "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);" (call_expression "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4)" identifier (argument_list "(local_24,param_1 + 0x94,puVar8 + 4)" ( identifier , (binary_expression "param_1 + 0x94" identifier + number_literal) , (binary_expression "puVar8 + 4" identifier + number_literal) ))) ;) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" identifier = (subscript_expression "local_24[0]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" identifier = identifier) ;) (labeled_statement "LAB_001969b3:\n    puVar11 = &uStack_50;" statement_identifier : (expression_statement "puVar11 = &uStack_50;" (assignment_expression "puVar11 = &uStack_50" identifier = (pointer_expression "&uStack_50" & identifier)) ;)) (expression_statement "puVar12 = &uStack_50;" (assignment_expression "puVar12 = &uStack_50" identifier = (pointer_expression "&uStack_50" & identifier)) ;) (expression_statement "puVar7 = local_28;" (assignment_expression "puVar7 = local_28" identifier = identifier) ;) (expression_statement "puVar13 = local_28;" (assignment_expression "puVar13 = local_28" identifier = identifier) ;) (if_statement "if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" if (parenthesized_expression "(puVar9 == (uint *)0x0)" ( (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" { (labeled_statement "LAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;" statement_identifier : (expression_statement "*(uint **)((int)puVar12 + -0x10) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0x10) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0x10)" * (cast_expression "(uint **)((int)puVar12 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -0x10)" ( (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x14)" ( (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;) })) (labeled_statement "LAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;" statement_identifier : (expression_statement "bVar14 = puVar13 != (uint *)0x0;" (assignment_expression "bVar14 = puVar13 != (uint *)0x0" identifier = (binary_expression "puVar13 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" else (compound_statement "{\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" { (do_statement "do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);" do (compound_statement "{\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    }" { (while_statement "while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" while (parenthesized_expression "(puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0)" ( (comma_expression "puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "puVar9 = puVar7" identifier = identifier) , (comma_expression "iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar9[5] - local_40" identifier = (binary_expression "puVar9[5] - local_40" (subscript_expression "puVar9[5]" identifier [ number_literal ]) - identifier)) , (binary_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44)))" ( (binary_expression "SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" (call_expression "SBORROW4(puVar9[5],local_40)" identifier (argument_list "(puVar9[5],local_40)" ( (subscript_expression "puVar9[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar9[4] < local_44))" ( identifier , (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar9[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar9[4] < local_44)" identifier - (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)))) )) (compound_statement "{\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" { (expression_statement "puVar13 = puVar9 + 3;" (assignment_expression "puVar13 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar7 = (uint *)*puVar13;" (assignment_expression "puVar7 = (uint *)*puVar13" identifier = (cast_expression "(uint *)*puVar13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;" if (parenthesized_expression "((uint *)*puVar13 == (uint *)0x0)" ( (binary_expression "(uint *)*puVar13 == (uint *)0x0" (cast_expression "(uint *)*puVar13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier)) == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001967a0;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (uint *)puVar9[2];" (assignment_expression "puVar7 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((uint *)puVar9[2] != (uint *)0x0)" ( (binary_expression "(uint *)puVar9[2] != (uint *)0x0" (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ])) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_001967a0:\n    local_3c = piVar5;" statement_identifier : (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" identifier = identifier) ;)) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" identifier = identifier) ;) (if_statement "if (local_34 == puVar9) goto LAB_00196920;" if (parenthesized_expression "(local_34 == puVar9)" ( (binary_expression "local_34 == puVar9" identifier == identifier) )) (goto_statement "goto LAB_00196920;" goto statement_identifier ;)) (expression_statement "iVar2 = local_40 - puVar9[5];" (assignment_expression "iVar2 = local_40 - puVar9[5]" identifier = (binary_expression "local_40 - puVar9[5]" identifier - (subscript_expression "puVar9[5]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;" if (parenthesized_expression "((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0)" ( (binary_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (parenthesized_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4])))" ( (binary_expression "SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" (call_expression "SBORROW4(local_40,puVar9[5])" identifier (argument_list "(local_40,puVar9[5])" ( identifier , (subscript_expression "puVar9[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" identifier (argument_list "(iVar2,(uint)(local_44 < puVar9[4]))" ( identifier , (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(local_44 < puVar9[4]))" ( (binary_expression "iVar2 - (uint)(local_44 < puVar9[4])" identifier - (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (goto_statement "goto LAB_001968f4;" goto statement_identifier ;)) (expression_statement "local_2c = (uint *)(param_1 + 0x94);" (assignment_expression "local_2c = (uint *)(param_1 + 0x94)" identifier = (cast_expression "(uint *)(param_1 + 0x94)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) ;) (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" identifier = (cast_expression "(uint *)FUN_001e5210(0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5210(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" identifier = identifier) ;) (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" identifier = identifier) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = puVar8 + 4;" (assignment_expression "local_30 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "*local_30 = local_44;" (assignment_expression "*local_30 = local_44" (pointer_expression "*local_30" * identifier) = identifier) ;) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = puVar9[5];" (assignment_expression "uVar10 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar1 = (uint)(local_44 < puVar9[4]);" (assignment_expression "uVar1 = (uint)(local_44 < puVar9[4])" identifier = (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < puVar9[4])" ( (binary_expression "local_44 < puVar9[4]" identifier < (subscript_expression "puVar9[4]" identifier [ number_literal ])) )))) ;) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) (if_statement "if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" if (parenthesized_expression "((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0)" ( (binary_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1))" ( (binary_expression "SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)" (call_expression "SBORROW4(local_40,uVar10)" identifier (argument_list "(local_40,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_40 - uVar10,uVar1)" identifier (argument_list "(local_40 - uVar10,uVar1)" ( (binary_expression "local_40 - uVar10" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((local_40 - uVar10) - uVar1) < 0" (cast_expression "(int)((local_40 - uVar10) - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_40 - uVar10) - uVar1)" ( (binary_expression "(local_40 - uVar10) - uVar1" (parenthesized_expression "(local_40 - uVar10)" ( (binary_expression "local_40 - uVar10" identifier - identifier) )) - identifier) ))) < number_literal)) )) (compound_statement "{\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" { (expression_statement "uVar1 = (uint)(puVar9[4] < local_44);" (assignment_expression "uVar1 = (uint)(puVar9[4] < local_44)" identifier = (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9[4] < local_44)" ( (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" identifier [ number_literal ]) < identifier) )))) ;) (if_statement "if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;" if (parenthesized_expression "((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0)" ( (binary_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0" (parenthesized_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1))" ( (binary_expression "SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)" (call_expression "SBORROW4(uVar10,local_40)" identifier (argument_list "(uVar10,local_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar10 - local_40,uVar1)" identifier (argument_list "(uVar10 - local_40,uVar1)" ( (binary_expression "uVar10 - local_40" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((uVar10 - local_40) - uVar1) < 0" (cast_expression "(int)((uVar10 - local_40) - uVar1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar10 - local_40) - uVar1)" ( (binary_expression "(uVar10 - local_40) - uVar1" (parenthesized_expression "(uVar10 - local_40)" ( (binary_expression "uVar10 - local_40" identifier - identifier) )) - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_001969ca;" goto statement_identifier ;)) (if_statement "if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" if (parenthesized_expression "(*(uint **)(param_1 + 0xa4) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0xa4) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa4)" * (cast_expression "(uint **)(param_1 + 0xa4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" { (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_001e83a0(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e83a0(puVar9)" identifier = (cast_expression "(uint *)FUN_001e83a0(puVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e83a0(puVar9)" identifier (argument_list "(puVar9)" ( identifier ))))) ;) (expression_statement "iVar2 = uVar4 - puVar7[5];" (assignment_expression "iVar2 = uVar4 - puVar7[5]" identifier = (binary_expression "uVar4 - puVar7[5]" identifier - (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;" if (parenthesized_expression "((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0)" ( (binary_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4])))" ( (binary_expression "SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" (call_expression "SBORROW4(uVar4,puVar7[5])" identifier (argument_list "(uVar4,puVar7[5])" ( identifier , (subscript_expression "puVar7[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" identifier (argument_list "(iVar2,(uint)(uVar3 < puVar7[4]))" ( identifier , (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < puVar7[4])" ( (binary_expression "uVar3 < puVar7[4]" identifier < (subscript_expression "puVar7[4]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(uVar3 < puVar7[4]))" ( (binary_expression "iVar2 - (uint)(uVar3 < puVar7[4])" identifier - (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < puVar7[4])" ( (binary_expression "uVar3 < puVar7[4]" identifier < (subscript_expression "puVar7[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00196a00;" goto statement_identifier ;)) (if_statement "if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }" if (parenthesized_expression "(puVar9[3] == 0)" ( (binary_expression "puVar9[3] == 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          puVar7 = puVar9;\n        }" { (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" identifier = identifier) ;) })) (expression_statement "bVar14 = puVar9[3] != 0;" (assignment_expression "bVar14 = puVar9[3] != 0" identifier = (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal)) ;) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" identifier = identifier) ;) (goto_statement "goto LAB_001968c5;" goto statement_identifier ;) })) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;) })) (if_statement "if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" if (parenthesized_expression "(*(uint **)(param_1 + 0xa0) != puVar9)" ( (binary_expression "*(uint **)(param_1 + 0xa0) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa0)" * (cast_expression "(uint **)(param_1 + 0xa0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" { (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_001e8400(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e8400(puVar9)" identifier = (cast_expression "(uint *)FUN_001e8400(puVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e8400(puVar9)" identifier (argument_list "(puVar9)" ( identifier ))))) ;) (expression_statement "puVar11 = (undefined4 *)auStack_4c;" (assignment_expression "puVar11 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar2 = puVar7[5] - local_40;" (assignment_expression "iVar2 = puVar7[5] - local_40" identifier = (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" if (parenthesized_expression "((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" ( (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" ( (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" identifier (argument_list "(puVar7[5],local_40)" ( (subscript_expression "puVar7[5]" identifier [ number_literal ]) , identifier ))) != (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" identifier (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" ( identifier , (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) ))) )))) )) == (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" ( (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" identifier - (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7[4] < local_44)" ( (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" identifier [ number_literal ]) < identifier) )))) ))) < number_literal)) )) (compound_statement "{\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" { (labeled_statement "LAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);" statement_identifier : (expression_statement "FUN_001989e0(local_24,local_2c,local_30);" (call_expression "FUN_001989e0(local_24,local_2c,local_30)" identifier (argument_list "(local_24,local_2c,local_30)" ( identifier , identifier , identifier ))) ;)) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" identifier = (subscript_expression "local_24[0]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = local_2c;" (assignment_expression "puVar8 = local_2c" identifier = identifier) ;) (goto_statement "goto LAB_001969b3;" goto statement_identifier ;) })) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" identifier = identifier) ;) (expression_statement "puVar13 = puVar9;" (assignment_expression "puVar13 = puVar9" identifier = identifier) ;) (if_statement "if (puVar7[3] == 0) goto LAB_0019691a;" if (parenthesized_expression "(puVar7[3] == 0)" ( (binary_expression "puVar7[3] == 0" (subscript_expression "puVar7[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0019691a;" goto statement_identifier ;)) (goto_statement "goto LAB_001969b7;" goto statement_identifier ;) })) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (labeled_statement "LAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;" statement_identifier : (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" identifier = (cast_expression "(undefined4 *)auStack_4c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) }))) (if_statement "if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" if (parenthesized_expression "((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14))" ( (binary_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)" (parenthesized_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18))" ( (binary_expression "puVar7 == *(uint **)((int)puVar12 + 0x18)" identifier == (pointer_expression "*(uint **)((int)puVar12 + 0x18)" * (cast_expression "(uint **)((int)puVar12 + 0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + 0x18)" ( (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) || (parenthesized_expression "(bVar14)" ( identifier ))) )) (compound_statement "{\n    uVar10 = 1;\n  }" { (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" else (compound_statement "{\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" { (expression_statement "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];" (assignment_expression "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5]" identifier = (binary_expression "*(int *)((int)puVar12 + 0xc) - puVar7[5]" (pointer_expression "*(int *)((int)puVar12 + 0xc)" * (cast_expression "(int *)((int)puVar12 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0xc)" ( (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);" (assignment_expression "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" identifier = (call_expression "(uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" ( (binary_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])))" ( (binary_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (call_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5])" identifier (argument_list "(*(int *)((int)puVar12 + 0xc),puVar7[5])" ( (pointer_expression "*(int *)((int)puVar12 + 0xc)" * (cast_expression "(int *)((int)puVar12 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0xc)" ( (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (subscript_expression "puVar7[5]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" identifier (argument_list "(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( identifier , (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" ( (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" * (cast_expression "(uint *)((int)puVar12 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 8)" ( (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (subscript_expression "puVar7[4]" identifier [ number_literal ])) ))) )))) )) != (binary_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" ( (binary_expression "iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" identifier - (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" ( (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" * (cast_expression "(uint *)((int)puVar12 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 8)" ( (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (subscript_expression "puVar7[4]" identifier [ number_literal ])) )))) ))) < number_literal)) )))) ;) }))) (expression_statement "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);" (assignment_expression "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18)" (pointer_expression "*(undefined4 *)((int)puVar12 + -4)" * (cast_expression "(undefined4 *)((int)puVar12 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -4)" ( (binary_expression "(int)puVar12 + -4" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)puVar12 + 0x18)" * (cast_expression "(undefined4 *)((int)puVar12 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x18)" ( (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint **)((int)puVar12 + -8) = puVar7;" (assignment_expression "*(uint **)((int)puVar12 + -8) = puVar7" (pointer_expression "*(uint **)((int)puVar12 + -8)" * (cast_expression "(uint **)((int)puVar12 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -8)" ( (binary_expression "(int)puVar12 + -8" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)puVar12 + -0xc) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0xc) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0xc)" * (cast_expression "(uint **)((int)puVar12 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar12 + -0xc)" ( (binary_expression "(int)puVar12 + -0xc" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)((int)puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)((int)puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)((int)puVar12 + -0x10)" * (cast_expression "(uint *)((int)puVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x10)" ( (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + -0x14)" ( (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e84e0();" (call_expression "FUN_001e84e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;" (assignment_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" * (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" * (cast_expression "(int *)((int)puVar12 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x50)" ( (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) = (binary_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" * (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" ( (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" * (cast_expression "(int *)((int)puVar12 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x50)" ( (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (labeled_statement "LAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);" statement_identifier : (expression_statement "uVar10 = *(uint *)((int)puVar12 + 0x10);" (assignment_expression "uVar10 = *(uint *)((int)puVar12 + 0x10)" identifier = (pointer_expression "*(uint *)((int)puVar12 + 0x10)" * (cast_expression "(uint *)((int)puVar12 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x10)" ( (binary_expression "(int)puVar12 + 0x10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[6] = uVar10;" (assignment_expression "puVar9[6] = uVar10" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar9[7] = *(uint *)((int)puVar12 + 0x14);" (assignment_expression "puVar9[7] = *(uint *)((int)puVar12 + 0x14)" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)puVar12 + 0x14)" * (cast_expression "(uint *)((int)puVar12 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x14)" ( (binary_expression "(int)puVar12 + 0x14" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (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) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )))) ))) < LIT)))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )))) ))) < LIT)))) )) (compound_statement { (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))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )))) ))) < LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (subscript_expression IDENT [ LIT ]) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < (subscript_expression IDENT [ LIT ])) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < (subscript_expression IDENT [ LIT ])) )))) ))) < LIT)) )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (return_statement return ;) })))
(function_definition "void FUN_001966d0(int param_1,uint param_2,uint param_3)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001966d0(int param_1,uint param_2,uint param_3)" (identifier "FUN_001966d0") (parameter_list "(int param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint *puVar13;\n  bool bVar14;\n  undefined4 uStack_50;\n  undefined1 auStack_4c [8];\n  uint local_44;\n  uint local_40;\n  int *local_3c;\n  undefined4 *local_38;\n  uint *local_34;\n  uint *local_30;\n  uint *local_2c;\n  uint *local_28;\n  uint *local_24 [4];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1966d9;\n  local_44 = param_2;\n  local_40 = param_3;\n  uStack_50 = 0;\n  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);\n  if (piVar5 == (int *)0x0) {\n    return;\n  }\n  local_3c = piVar5;\n  puVar6 = (undefined4 *)FUN_001e5210(0x40);\n  *puVar6 = 0;\n  puVar6[1] = 0;\n  puVar6[3] = 0;\n  puVar6[6] = 0;\n  puVar6[8] = 0;\n  puVar6[10] = 0;\n  puVar6[0xd] = 0;\n  local_38 = puVar6;\n  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);\n  local_34 = (uint *)(param_1 + 0x98);\n  puVar12 = (undefined4 *)auStack_4c;\n  puVar7 = *(uint **)(param_1 + 0x9c);\n  puVar8 = local_34;\n  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }\n  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }\n  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);\n  *(uint **)((int)puVar12 + -8) = puVar7;\n  *(uint **)((int)puVar12 + -0xc) = puVar8;\n  *(uint *)((int)puVar12 + -0x10) = uVar10;\n  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;\n  FUN_001e84e0();\n  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;\n  puVar9 = puVar8;\nLAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);\n  puVar9[8] = 0;\n  puVar9[6] = uVar10;\n  puVar9[7] = *(uint *)((int)puVar12 + 0x14);\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "undefined4 uStack_50;" (type_identifier "undefined4") (identifier "uStack_50") (; ";")) (declaration "undefined1 auStack_4c [8];" (type_identifier "undefined1") (array_declarator "auStack_4c [8]" (identifier "auStack_4c") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int *local_3c;" (primitive_type "int") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "undefined4 *local_38;" (type_identifier "undefined4") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "uint *local_34;" (type_identifier "uint") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "uint *local_30;" (type_identifier "uint") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "uint *local_2c;" (type_identifier "uint") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "uint *local_28;" (type_identifier "uint") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "uint *local_24 [4];" (type_identifier "uint") (pointer_declarator "*local_24 [4]" (* "*") (array_declarator "local_24 [4]" (identifier "local_24") ([ "[") (number_literal "4") (] "]"))) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1966d9;" (assignment_expression "uStack_14 = 0x1966d9" (identifier "uStack_14") (= "=") (number_literal "0x1966d9")) (; ";")) (expression_statement "local_44 = param_2;" (assignment_expression "local_44 = param_2" (identifier "local_44") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_40 = param_3;" (assignment_expression "local_40 = param_3" (identifier "local_40") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uStack_50 = 0;" (assignment_expression "uStack_50 = 0" (identifier "uStack_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);" (assignment_expression "piVar5 = (int *)FUN_00196220(param_1,param_2,param_3)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_00196220(param_1,param_2,param_3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00196220(param_1,param_2,param_3)" (identifier "FUN_00196220") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))))) (; ";")) (if_statement "if (piVar5 == (int *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" (identifier "local_3c") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "puVar6 = (undefined4 *)FUN_001e5210(0x40);" (assignment_expression "puVar6 = (undefined4 *)FUN_001e5210(0x40)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)FUN_001e5210(0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5210(0x40)" (identifier "FUN_001e5210") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")"))))) (; ";")) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[3] = 0;" (assignment_expression "puVar6[3] = 0" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[6] = 0;" (assignment_expression "puVar6[6] = 0" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[8] = 0;" (assignment_expression "puVar6[8] = 0" (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[10] = 0;" (assignment_expression "puVar6[10] = 0" (subscript_expression "puVar6[10]" (identifier "puVar6") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6[0xd] = 0;" (assignment_expression "puVar6[0xd] = 0" (subscript_expression "puVar6[0xd]" (identifier "puVar6") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" (identifier "local_38") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6);" (call_expression "(**(code **)(*piVar5 + 0x20))(piVar5,puVar6)" (parenthesized_expression "(**(code **)(*piVar5 + 0x20))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x20)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x20)" (* "*") (cast_expression "(code **)(*piVar5 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x20)" (( "(") (binary_expression "*piVar5 + 0x20" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(piVar5,puVar6)" (( "(") (identifier "piVar5") (, ",") (identifier "puVar6") () ")"))) (; ";")) (expression_statement "local_34 = (uint *)(param_1 + 0x98);" (assignment_expression "local_34 = (uint *)(param_1 + 0x98)" (identifier "local_34") (= "=") (cast_expression "(uint *)(param_1 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (; ";")) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)auStack_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_4c"))) (; ";")) (expression_statement "puVar7 = *(uint **)(param_1 + 0x9c);" (assignment_expression "puVar7 = *(uint **)(param_1 + 0x9c)" (identifier "puVar7") (= "=") (pointer_expression "*(uint **)(param_1 + 0x9c)" (* "*") (cast_expression "(uint **)(param_1 + 0x9c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x9c)" (( "(") (binary_expression "param_1 + 0x9c" (identifier "param_1") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";")) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" (identifier "puVar8") (= "=") (identifier "local_34")) (; ";")) (if_statement "if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }\n  else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" (if "if") (parenthesized_expression "(*(uint **)(param_1 + 0x9c) == (uint *)0x0)" (( "(") (binary_expression "*(uint **)(param_1 + 0x9c) == (uint *)0x0" (pointer_expression "*(uint **)(param_1 + 0x9c)" (* "*") (cast_expression "(uint **)(param_1 + 0x9c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x9c)" (( "(") (binary_expression "param_1 + 0x9c" (identifier "param_1") (+ "+") (number_literal "0x9c")) () ")")))) (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    puVar8[6] = 0;\n    puVar8[4] = local_44;\n    puVar8[5] = local_40;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }\n    local_30 = puVar8;\n    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);\n    puVar9 = local_24[0];\n    puVar8 = local_34;\nLAB_001969b3:\n    puVar11 = &uStack_50;\n    puVar12 = &uStack_50;\n    puVar7 = local_28;\n    puVar13 = local_28;\n    if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }\nLAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;\n    puVar7 = puVar9;\n    puVar12 = puVar11;\n  }" ({ "{") (labeled_statement "LAB_00196920:\n    puVar8 = (uint *)FUN_001e5210(0x24);" (statement_identifier "LAB_00196920") (: ":") (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" (identifier "puVar8") (= "=") (cast_expression "(uint *)FUN_001e5210(0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5210(0x24)" (identifier "FUN_001e5210") (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")"))))) (; ";"))) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[4] = local_44;" (assignment_expression "puVar8[4] = local_44" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0xa8) != 0) &&\n       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" (parenthesized_expression "(*(int *)(param_1 + 0xa8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xa8) != 0" (pointer_expression "*(int *)(param_1 + 0xa8)" (* "*") (cast_expression "(int *)(param_1 + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" (( "(") (comma_expression "puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "puVar7 = *(uint **)(param_1 + 0xa4)" (identifier "puVar7") (= "=") (pointer_expression "*(uint **)(param_1 + 0xa4)" (* "*") (cast_expression "(uint **)(param_1 + 0xa4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")"))))) (, ",") (comma_expression "iVar2 = puVar7[5] - local_40,\n       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar7[5] - local_40" (identifier "iVar2") (= "=") (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "local_40"))) (, ",") (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=\n       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" (( "(") (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" (identifier "SBORROW4") (argument_list "(puVar7[5],local_40)" (( "(") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_40") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar7[4] < local_44)" (( "(") (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" (( "(") (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" (identifier "iVar2") (- "-") (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar7[4] < local_44)" (( "(") (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")")))) () ")"))) (< "<") (number_literal "0"))))) () ")"))) () ")")) (compound_statement "{\nLAB_0019691a:\n      bVar14 = false;\n      goto LAB_001968c5;\n    }" ({ "{") (labeled_statement "LAB_0019691a:\n      bVar14 = false;" (statement_identifier "LAB_0019691a") (: ":") (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";"))) (goto_statement "goto LAB_001968c5;" (goto "goto") (statement_identifier "LAB_001968c5") (; ";")) (} "}"))) (expression_statement "local_30 = puVar8;" (assignment_expression "local_30 = puVar8" (identifier "local_30") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);" (call_expression "FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4)" (identifier "FUN_001989e0") (argument_list "(local_24,param_1 + 0x94,puVar8 + 4)" (( "(") (identifier "local_24") (, ",") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) (, ",") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4")) () ")"))) (; ";")) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" (identifier "puVar9") (= "=") (subscript_expression "local_24[0]" (identifier "local_24") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "puVar8 = local_34;" (assignment_expression "puVar8 = local_34" (identifier "puVar8") (= "=") (identifier "local_34")) (; ";")) (labeled_statement "LAB_001969b3:\n    puVar11 = &uStack_50;" (statement_identifier "LAB_001969b3") (: ":") (expression_statement "puVar11 = &uStack_50;" (assignment_expression "puVar11 = &uStack_50" (identifier "puVar11") (= "=") (pointer_expression "&uStack_50" (& "&") (identifier "uStack_50"))) (; ";"))) (expression_statement "puVar12 = &uStack_50;" (assignment_expression "puVar12 = &uStack_50" (identifier "puVar12") (= "=") (pointer_expression "&uStack_50" (& "&") (identifier "uStack_50"))) (; ";")) (expression_statement "puVar7 = local_28;" (assignment_expression "puVar7 = local_28" (identifier "puVar7") (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar13 = local_28;" (assignment_expression "puVar13 = local_28" (identifier "puVar13") (= "=") (identifier "local_28")) (; ";")) (if_statement "if (puVar9 == (uint *)0x0) {\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" (if "if") (parenthesized_expression "(puVar9 == (uint *)0x0)" (( "(") (binary_expression "puVar9 == (uint *)0x0" (identifier "puVar9") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;\n      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;\n      FUN_001e6dc0();\n      puVar9 = puVar7;\n      goto LAB_001968f4;\n    }" ({ "{") (labeled_statement "LAB_001969ca:\n      *(uint **)((int)puVar12 + -0x10) = puVar8;" (statement_identifier "LAB_001969ca") (: ":") (expression_statement "*(uint **)((int)puVar12 + -0x10) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0x10) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0x10)" (* "*") (cast_expression "(uint **)((int)puVar12 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar12 + -0x10)" (( "(") (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar8")) (; ";"))) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + -0x14)" (( "(") (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1969d3")) (; ";")) (expression_statement "FUN_001e6dc0();" (call_expression "FUN_001e6dc0()" (identifier "FUN_001e6dc0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" (identifier "puVar9") (= "=") (identifier "puVar7")) (; ";")) (goto_statement "goto LAB_001968f4;" (goto "goto") (statement_identifier "LAB_001968f4") (; ";")) (} "}"))) (labeled_statement "LAB_001969b7:\n    bVar14 = puVar13 != (uint *)0x0;" (statement_identifier "LAB_001969b7") (: ":") (expression_statement "bVar14 = puVar13 != (uint *)0x0;" (assignment_expression "bVar14 = puVar13 != (uint *)0x0" (identifier "bVar14") (= "=") (binary_expression "puVar13 != (uint *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";"))) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" (identifier "puVar7") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" (identifier "puVar12") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (else_clause "else {\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" (else "else") (compound_statement "{\n    do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);\nLAB_001967a0:\n    local_3c = piVar5;\n    local_38 = puVar6;\n    if (local_34 == puVar9) goto LAB_00196920;\n    iVar2 = local_40 - puVar9[5];\n    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;\n    local_2c = (uint *)(param_1 + 0x94);\n    puVar8 = (uint *)FUN_001e5210(0x24);\n    uVar4 = local_40;\n    uVar3 = local_44;\n    puVar8[6] = 0;\n    local_30 = puVar8 + 4;\n    *local_30 = local_44;\n    puVar8[5] = local_40;\n    uVar10 = puVar9[5];\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar12 = (undefined4 *)auStack_4c;\n    uVar1 = (uint)(local_44 < puVar9[4]);\n    puVar7 = puVar9;\n    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }\n    if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }\n    bVar14 = true;\nLAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;\n  }" ({ "{") (do_statement "do {\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    } while ((uint *)puVar9[2] != (uint *)0x0);" (do "do") (compound_statement "{\n      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }\n      puVar7 = (uint *)puVar9[2];\n      puVar8 = puVar9;\n    }" ({ "{") (while_statement "while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" (while "while") (parenthesized_expression "(puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0)" (( "(") (comma_expression "puVar9 = puVar7, iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "puVar9 = puVar7" (identifier "puVar9") (= "=") (identifier "puVar7")) (, ",") (comma_expression "iVar2 = puVar9[5] - local_40,\n            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (assignment_expression "iVar2 = puVar9[5] - local_40" (identifier "iVar2") (= "=") (binary_expression "puVar9[5] - local_40" (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "local_40"))) (, ",") (binary_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=\n            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44)))" (( "(") (binary_expression "SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" (call_expression "SBORROW4(puVar9[5],local_40)" (identifier "SBORROW4") (argument_list "(puVar9[5],local_40)" (( "(") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_40") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(puVar9[4] < local_44))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(puVar9[4] < local_44))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar9[4] < local_44)" (( "(") (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar9[4] < local_44))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(puVar9[4] < local_44))" (( "(") (binary_expression "iVar2 - (uint)(puVar9[4] < local_44)" (identifier "iVar2") (- "-") (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar9[4] < local_44)" (( "(") (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")")))) () ")"))) (< "<") (number_literal "0"))))) () ")")) (compound_statement "{\n        puVar13 = puVar9 + 3;\n        puVar7 = (uint *)*puVar13;\n        puVar9 = puVar8;\n        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;\n      }" ({ "{") (expression_statement "puVar13 = puVar9 + 3;" (assignment_expression "puVar13 = puVar9 + 3" (identifier "puVar13") (= "=") (binary_expression "puVar9 + 3" (identifier "puVar9") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar7 = (uint *)*puVar13;" (assignment_expression "puVar7 = (uint *)*puVar13" (identifier "puVar7") (= "=") (cast_expression "(uint *)*puVar13" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;" (if "if") (parenthesized_expression "((uint *)*puVar13 == (uint *)0x0)" (( "(") (binary_expression "(uint *)*puVar13 == (uint *)0x0" (cast_expression "(uint *)*puVar13" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001967a0;" (goto "goto") (statement_identifier "LAB_001967a0") (; ";"))) (} "}"))) (expression_statement "puVar7 = (uint *)puVar9[2];" (assignment_expression "puVar7 = (uint *)puVar9[2]" (identifier "puVar7") (= "=") (cast_expression "(uint *)puVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uint *)puVar9[2] != (uint *)0x0)" (( "(") (binary_expression "(uint *)puVar9[2] != (uint *)0x0" (cast_expression "(uint *)puVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_001967a0:\n    local_3c = piVar5;" (statement_identifier "LAB_001967a0") (: ":") (expression_statement "local_3c = piVar5;" (assignment_expression "local_3c = piVar5" (identifier "local_3c") (= "=") (identifier "piVar5")) (; ";"))) (expression_statement "local_38 = puVar6;" (assignment_expression "local_38 = puVar6" (identifier "local_38") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if (local_34 == puVar9) goto LAB_00196920;" (if "if") (parenthesized_expression "(local_34 == puVar9)" (( "(") (binary_expression "local_34 == puVar9" (identifier "local_34") (== "==") (identifier "puVar9")) () ")")) (goto_statement "goto LAB_00196920;" (goto "goto") (statement_identifier "LAB_00196920") (; ";"))) (expression_statement "iVar2 = local_40 - puVar9[5];" (assignment_expression "iVar2 = local_40 - puVar9[5]" (identifier "iVar2") (= "=") (binary_expression "local_40 - puVar9[5]" (identifier "local_40") (- "-") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;" (if "if") (parenthesized_expression "((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0)" (( "(") (binary_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==\n        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (parenthesized_expression "(SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4])))" (( "(") (binary_expression "SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" (call_expression "SBORROW4(local_40,puVar9[5])" (identifier "SBORROW4") (argument_list "(local_40,puVar9[5])" (( "(") (identifier "local_40") (, ",") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(local_44 < puVar9[4]))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 < puVar9[4])" (( "(") (binary_expression "local_44 < puVar9[4]" (identifier "local_44") (< "<") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(local_44 < puVar9[4]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(local_44 < puVar9[4]))" (( "(") (binary_expression "iVar2 - (uint)(local_44 < puVar9[4])" (identifier "iVar2") (- "-") (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 < puVar9[4])" (( "(") (binary_expression "local_44 < puVar9[4]" (identifier "local_44") (< "<") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_001968f4;" (goto "goto") (statement_identifier "LAB_001968f4") (; ";"))) (expression_statement "local_2c = (uint *)(param_1 + 0x94);" (assignment_expression "local_2c = (uint *)(param_1 + 0x94)" (identifier "local_2c") (= "=") (cast_expression "(uint *)(param_1 + 0x94)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)FUN_001e5210(0x24);" (assignment_expression "puVar8 = (uint *)FUN_001e5210(0x24)" (identifier "puVar8") (= "=") (cast_expression "(uint *)FUN_001e5210(0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5210(0x24)" (identifier "FUN_001e5210") (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")"))))) (; ";")) (expression_statement "uVar4 = local_40;" (assignment_expression "uVar4 = local_40" (identifier "uVar4") (= "=") (identifier "local_40")) (; ";")) (expression_statement "uVar3 = local_44;" (assignment_expression "uVar3 = local_44" (identifier "uVar3") (= "=") (identifier "local_44")) (; ";")) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = puVar8 + 4;" (assignment_expression "local_30 = puVar8 + 4" (identifier "local_30") (= "=") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*local_30 = local_44;" (assignment_expression "*local_30 = local_44" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "puVar8[5] = local_40;" (assignment_expression "puVar8[5] = local_40" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "uVar10 = puVar9[5];" (assignment_expression "uVar10 = puVar9[5]" (identifier "uVar10") (= "=") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)auStack_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_4c"))) (; ";")) (expression_statement "uVar1 = (uint)(local_44 < puVar9[4]);" (assignment_expression "uVar1 = (uint)(local_44 < puVar9[4])" (identifier "uVar1") (= "=") (call_expression "(uint)(local_44 < puVar9[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 < puVar9[4])" (( "(") (binary_expression "local_44 < puVar9[4]" (identifier "local_44") (< "<") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" (identifier "puVar7") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0) {\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" (if "if") (parenthesized_expression "((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0)" (( "(") (binary_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==\n        (int)((local_40 - uVar10) - uVar1) < 0" (parenthesized_expression "(SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1))" (( "(") (binary_expression "SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)" (call_expression "SBORROW4(local_40,uVar10)" (identifier "SBORROW4") (argument_list "(local_40,uVar10)" (( "(") (identifier "local_40") (, ",") (identifier "uVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(local_40 - uVar10,uVar1)" (identifier "SBORROW4") (argument_list "(local_40 - uVar10,uVar1)" (( "(") (binary_expression "local_40 - uVar10" (identifier "local_40") (- "-") (identifier "uVar10")) (, ",") (identifier "uVar1") () ")")))) () ")")) (== "==") (binary_expression "(int)((local_40 - uVar10) - uVar1) < 0" (cast_expression "(int)((local_40 - uVar10) - uVar1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((local_40 - uVar10) - uVar1)" (( "(") (binary_expression "(local_40 - uVar10) - uVar1" (parenthesized_expression "(local_40 - uVar10)" (( "(") (binary_expression "local_40 - uVar10" (identifier "local_40") (- "-") (identifier "uVar10")) () ")")) (- "-") (identifier "uVar1")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      uVar1 = (uint)(puVar9[4] < local_44);\n      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;\n      if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }\n      goto LAB_0019691a;\n    }" ({ "{") (expression_statement "uVar1 = (uint)(puVar9[4] < local_44);" (assignment_expression "uVar1 = (uint)(puVar9[4] < local_44)" (identifier "uVar1") (= "=") (call_expression "(uint)(puVar9[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar9[4] < local_44)" (( "(") (binary_expression "puVar9[4] < local_44" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;" (if "if") (parenthesized_expression "((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0)" (( "(") (binary_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==\n          (int)((uVar10 - local_40) - uVar1) < 0" (parenthesized_expression "(SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1))" (( "(") (binary_expression "SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)" (call_expression "SBORROW4(uVar10,local_40)" (identifier "SBORROW4") (argument_list "(uVar10,local_40)" (( "(") (identifier "uVar10") (, ",") (identifier "local_40") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar10 - local_40,uVar1)" (identifier "SBORROW4") (argument_list "(uVar10 - local_40,uVar1)" (( "(") (binary_expression "uVar10 - local_40" (identifier "uVar10") (- "-") (identifier "local_40")) (, ",") (identifier "uVar1") () ")")))) () ")")) (== "==") (binary_expression "(int)((uVar10 - local_40) - uVar1) < 0" (cast_expression "(int)((uVar10 - local_40) - uVar1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar10 - local_40) - uVar1)" (( "(") (binary_expression "(uVar10 - local_40) - uVar1" (parenthesized_expression "(uVar10 - local_40)" (( "(") (binary_expression "uVar10 - local_40" (identifier "uVar10") (- "-") (identifier "local_40")) () ")")) (- "-") (identifier "uVar1")) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_001969ca;" (goto "goto") (statement_identifier "LAB_001969ca") (; ";"))) (if_statement "if (*(uint **)(param_1 + 0xa4) != puVar9) {\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" (if "if") (parenthesized_expression "(*(uint **)(param_1 + 0xa4) != puVar9)" (( "(") (binary_expression "*(uint **)(param_1 + 0xa4) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa4)" (* "*") (cast_expression "(uint **)(param_1 + 0xa4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")")))) (!= "!=") (identifier "puVar9")) () ")")) (compound_statement "{\n        local_28 = puVar8;\n        puVar7 = (uint *)FUN_001e83a0(puVar9);\n        iVar2 = uVar4 - puVar7[5];\n        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;\n        if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }\n        bVar14 = puVar9[3] != 0;\n        puVar8 = local_28;\n        goto LAB_001968c5;\n      }" ({ "{") (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" (identifier "local_28") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar7 = (uint *)FUN_001e83a0(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e83a0(puVar9)" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_001e83a0(puVar9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e83a0(puVar9)" (identifier "FUN_001e83a0") (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))))) (; ";")) (expression_statement "iVar2 = uVar4 - puVar7[5];" (assignment_expression "iVar2 = uVar4 - puVar7[5]" (identifier "iVar2") (= "=") (binary_expression "uVar4 - puVar7[5]" (identifier "uVar4") (- "-") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;" (if "if") (parenthesized_expression "((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0)" (( "(") (binary_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==\n            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4])))" (( "(") (binary_expression "SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" (call_expression "SBORROW4(uVar4,puVar7[5])" (identifier "SBORROW4") (argument_list "(uVar4,puVar7[5])" (( "(") (identifier "uVar4") (, ",") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(uVar3 < puVar7[4]))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < puVar7[4])" (( "(") (binary_expression "uVar3 < puVar7[4]" (identifier "uVar3") (< "<") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(uVar3 < puVar7[4]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(uVar3 < puVar7[4]))" (( "(") (binary_expression "iVar2 - (uint)(uVar3 < puVar7[4])" (identifier "iVar2") (- "-") (call_expression "(uint)(uVar3 < puVar7[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < puVar7[4])" (( "(") (binary_expression "uVar3 < puVar7[4]" (identifier "uVar3") (< "<") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00196a00;" (goto "goto") (statement_identifier "LAB_00196a00") (; ";"))) (if_statement "if (puVar9[3] == 0) {\n          puVar7 = puVar9;\n        }" (if "if") (parenthesized_expression "(puVar9[3] == 0)" (( "(") (binary_expression "puVar9[3] == 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar7 = puVar9;\n        }" ({ "{") (expression_statement "puVar7 = puVar9;" (assignment_expression "puVar7 = puVar9" (identifier "puVar7") (= "=") (identifier "puVar9")) (; ";")) (} "}"))) (expression_statement "bVar14 = puVar9[3] != 0;" (assignment_expression "bVar14 = puVar9[3] != 0" (identifier "bVar14") (= "=") (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" (identifier "puVar8") (= "=") (identifier "local_28")) (; ";")) (goto_statement "goto LAB_001968c5;" (goto "goto") (statement_identifier "LAB_001968c5") (; ";")) (} "}"))) (goto_statement "goto LAB_0019691a;" (goto "goto") (statement_identifier "LAB_0019691a") (; ";")) (} "}"))) (if_statement "if (*(uint **)(param_1 + 0xa0) != puVar9) {\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" (if "if") (parenthesized_expression "(*(uint **)(param_1 + 0xa0) != puVar9)" (( "(") (binary_expression "*(uint **)(param_1 + 0xa0) != puVar9" (pointer_expression "*(uint **)(param_1 + 0xa0)" (* "*") (cast_expression "(uint **)(param_1 + 0xa0)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")")))) (!= "!=") (identifier "puVar9")) () ")")) (compound_statement "{\n      local_28 = puVar8;\n      puVar7 = (uint *)FUN_001e8400(puVar9);\n      puVar11 = (undefined4 *)auStack_4c;\n      iVar2 = puVar7[5] - local_40;\n      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }\n      puVar8 = local_28;\n      puVar13 = puVar9;\n      if (puVar7[3] == 0) goto LAB_0019691a;\n      goto LAB_001969b7;\n    }" ({ "{") (expression_statement "local_28 = puVar8;" (assignment_expression "local_28 = puVar8" (identifier "local_28") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar7 = (uint *)FUN_001e8400(puVar9);" (assignment_expression "puVar7 = (uint *)FUN_001e8400(puVar9)" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_001e8400(puVar9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e8400(puVar9)" (identifier "FUN_001e8400") (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))))) (; ";")) (expression_statement "puVar11 = (undefined4 *)auStack_4c;" (assignment_expression "puVar11 = (undefined4 *)auStack_4c" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)auStack_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_4c"))) (; ";")) (expression_statement "iVar2 = puVar7[5] - local_40;" (assignment_expression "iVar2 = puVar7[5] - local_40" (identifier "iVar2") (= "=") (binary_expression "puVar7[5] - local_40" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (- "-") (identifier "local_40"))) (; ";")) (if_statement "if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" (if "if") (parenthesized_expression "((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)" (( "(") (binary_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==\n          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (parenthesized_expression "(SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44)))" (( "(") (binary_expression "SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (call_expression "SBORROW4(puVar7[5],local_40)" (identifier "SBORROW4") (argument_list "(puVar7[5],local_40)" (( "(") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_40") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(puVar7[4] < local_44))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(puVar7[4] < local_44))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar7[4] < local_44)" (( "(") (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0" (cast_expression "(int)(iVar2 - (uint)(puVar7[4] < local_44))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(puVar7[4] < local_44))" (( "(") (binary_expression "iVar2 - (uint)(puVar7[4] < local_44)" (identifier "iVar2") (- "-") (call_expression "(uint)(puVar7[4] < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar7[4] < local_44)" (( "(") (binary_expression "puVar7[4] < local_44" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (< "<") (identifier "local_44")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\nLAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);\n        puVar9 = local_24[0];\n        puVar8 = local_2c;\n        goto LAB_001969b3;\n      }" ({ "{") (labeled_statement "LAB_00196a00:\n        FUN_001989e0(local_24,local_2c,local_30);" (statement_identifier "LAB_00196a00") (: ":") (expression_statement "FUN_001989e0(local_24,local_2c,local_30);" (call_expression "FUN_001989e0(local_24,local_2c,local_30)" (identifier "FUN_001989e0") (argument_list "(local_24,local_2c,local_30)" (( "(") (identifier "local_24") (, ",") (identifier "local_2c") (, ",") (identifier "local_30") () ")"))) (; ";"))) (expression_statement "puVar9 = local_24[0];" (assignment_expression "puVar9 = local_24[0]" (identifier "puVar9") (= "=") (subscript_expression "local_24[0]" (identifier "local_24") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "puVar8 = local_2c;" (assignment_expression "puVar8 = local_2c" (identifier "puVar8") (= "=") (identifier "local_2c")) (; ";")) (goto_statement "goto LAB_001969b3;" (goto "goto") (statement_identifier "LAB_001969b3") (; ";")) (} "}"))) (expression_statement "puVar8 = local_28;" (assignment_expression "puVar8 = local_28" (identifier "puVar8") (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar13 = puVar9;" (assignment_expression "puVar13 = puVar9" (identifier "puVar13") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar7[3] == 0) goto LAB_0019691a;" (if "if") (parenthesized_expression "(puVar7[3] == 0)" (( "(") (binary_expression "puVar7[3] == 0" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0019691a;" (goto "goto") (statement_identifier "LAB_0019691a") (; ";"))) (goto_statement "goto LAB_001969b7;" (goto "goto") (statement_identifier "LAB_001969b7") (; ";")) (} "}"))) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" (identifier "bVar14") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_001968c5:\n    puVar12 = (undefined4 *)auStack_4c;" (statement_identifier "LAB_001968c5") (: ":") (expression_statement "puVar12 = (undefined4 *)auStack_4c;" (assignment_expression "puVar12 = (undefined4 *)auStack_4c" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)auStack_4c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_4c"))) (; ";"))) (} "}")))) (if_statement "if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {\n    uVar10 = 1;\n  }\n  else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" (if "if") (parenthesized_expression "((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14))" (( "(") (binary_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)" (parenthesized_expression "(puVar7 == *(uint **)((int)puVar12 + 0x18))" (( "(") (binary_expression "puVar7 == *(uint **)((int)puVar12 + 0x18)" (identifier "puVar7") (== "==") (pointer_expression "*(uint **)((int)puVar12 + 0x18)" (* "*") (cast_expression "(uint **)((int)puVar12 + 0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar12 + 0x18)" (( "(") (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")"))) () ")")) (compound_statement "{\n    uVar10 = 1;\n  }" ({ "{") (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" (identifier "uVar10") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" (else "else") (compound_statement "{\n    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];\n    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);\n  }" ({ "{") (expression_statement "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];" (assignment_expression "iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5]" (identifier "iVar2") (= "=") (binary_expression "*(int *)((int)puVar12 + 0xc) - puVar7[5]" (pointer_expression "*(int *)((int)puVar12 + 0xc)" (* "*") (cast_expression "(int *)((int)puVar12 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0xc)" (( "(") (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0xc")) () ")")))) (- "-") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);" (assignment_expression "uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" (identifier "uVar10") (= "=") (call_expression "(uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0)" (( "(") (binary_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=\n                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (parenthesized_expression "(SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])))" (( "(") (binary_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=\n                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (call_expression "SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5])" (identifier "SBORROW4") (argument_list "(*(int *)((int)puVar12 + 0xc),puVar7[5])" (( "(") (pointer_expression "*(int *)((int)puVar12 + 0xc)" (* "*") (cast_expression "(int *)((int)puVar12 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0xc)" (( "(") (binary_expression "(int)puVar12 + 0xc" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0xc")) () ")")))) (, ",") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (identifier "SBORROW4") (argument_list "(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (( "(") (identifier "iVar2") (, ",") (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" (( "(") (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" (* "*") (cast_expression "(uint *)((int)puVar12 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 8)" (( "(") (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "8")) () ")")))) (< "<") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0" (cast_expression "(int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))" (( "(") (binary_expression "iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (identifier "iVar2") (- "-") (call_expression "(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)((int)puVar12 + 8) < puVar7[4])" (( "(") (binary_expression "*(uint *)((int)puVar12 + 8) < puVar7[4]" (pointer_expression "*(uint *)((int)puVar12 + 8)" (* "*") (cast_expression "(uint *)((int)puVar12 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 8)" (( "(") (binary_expression "(int)puVar12 + 8" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "8")) () ")")))) (< "<") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);" (assignment_expression "*(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18)" (pointer_expression "*(undefined4 *)((int)puVar12 + -4)" (* "*") (cast_expression "(undefined4 *)((int)puVar12 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + -4)" (( "(") (binary_expression "(int)puVar12 + -4" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)puVar12 + 0x18)" (* "*") (cast_expression "(undefined4 *)((int)puVar12 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x18)" (( "(") (binary_expression "(int)puVar12 + 0x18" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(uint **)((int)puVar12 + -8) = puVar7;" (assignment_expression "*(uint **)((int)puVar12 + -8) = puVar7" (pointer_expression "*(uint **)((int)puVar12 + -8)" (* "*") (cast_expression "(uint **)((int)puVar12 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar12 + -8)" (( "(") (binary_expression "(int)puVar12 + -8" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(uint **)((int)puVar12 + -0xc) = puVar8;" (assignment_expression "*(uint **)((int)puVar12 + -0xc) = puVar8" (pointer_expression "*(uint **)((int)puVar12 + -0xc)" (* "*") (cast_expression "(uint **)((int)puVar12 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar12 + -0xc)" (( "(") (binary_expression "(int)puVar12 + -0xc" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(uint *)((int)puVar12 + -0x10) = uVar10;" (assignment_expression "*(uint *)((int)puVar12 + -0x10) = uVar10" (pointer_expression "*(uint *)((int)puVar12 + -0x10)" (* "*") (cast_expression "(uint *)((int)puVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + -0x10)" (( "(") (binary_expression "(int)puVar12 + -0x10" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;" (assignment_expression "*(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6" (pointer_expression "*(undefined4 *)((int)puVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + -0x14)" (( "(") (binary_expression "(int)puVar12 + -0x14" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1968e6")) (; ";")) (expression_statement "FUN_001e84e0();" (call_expression "FUN_001e84e0()" (identifier "FUN_001e84e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;" (assignment_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =\n       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" (* "*") (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" (( "(") (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" (* "*") (cast_expression "(int *)((int)puVar12 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x50)" (( "(") (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0xa8")) () ")")))) (= "=") (binary_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1" (pointer_expression "*(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" (* "*") (cast_expression "(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)puVar12 + 0x50) + 0xa8)" (( "(") (binary_expression "*(int *)((int)puVar12 + 0x50) + 0xa8" (pointer_expression "*(int *)((int)puVar12 + 0x50)" (* "*") (cast_expression "(int *)((int)puVar12 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x50)" (( "(") (binary_expression "(int)puVar12 + 0x50" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0xa8")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (labeled_statement "LAB_001968f4:\n  uVar10 = *(uint *)((int)puVar12 + 0x10);" (statement_identifier "LAB_001968f4") (: ":") (expression_statement "uVar10 = *(uint *)((int)puVar12 + 0x10);" (assignment_expression "uVar10 = *(uint *)((int)puVar12 + 0x10)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)((int)puVar12 + 0x10)" (* "*") (cast_expression "(uint *)((int)puVar12 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x10)" (( "(") (binary_expression "(int)puVar12 + 0x10" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[6] = uVar10;" (assignment_expression "puVar9[6] = uVar10" (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar9[7] = *(uint *)((int)puVar12 + 0x14);" (assignment_expression "puVar9[7] = *(uint *)((int)puVar12 + 0x14)" (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*(uint *)((int)puVar12 + 0x14)" (* "*") (cast_expression "(uint *)((int)puVar12 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x14)" (( "(") (binary_expression "(int)puVar12 + 0x14" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void read_symbols(Archive * this, off_t off) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 off)

{
  type_3 *pp_Var1;
  type_4 *var_17;
  size_t *psVar3;
  type_5 *var_4;
  type_3 p_Var5;
  type_6 var_9;
  int var_8;
  type_7 var_5;
  int var_6;
  type_8 *var_2;
  type_3 p_Var11;
  type_5 *p_Var12;
  type_5 *var_13;
  type_5 *var_18;
  bool bVar15;
  type_5 *var_16;
  type_5 *var_14;
  
  var_5 = (type_7)off;
  var_6 = off._4_4_;
  var_2 = var_1(this,off,(bool *)0x0);
  if (var_2 == (type_8 *)0x0) {
    return;
  }
  p_Var11 = (type_3)var_3(0x40);
  p_Var11->_M_color = _S_red;
  p_Var11->_M_parent = (type_3)0x0;
  p_Var11->_M_right = (type_3)0x0;
  p_Var11[1]._M_left = (type_3)0x0;
  p_Var11[2]._M_color = _S_red;
  p_Var11[2]._M_left = (type_3)0x0;
  p_Var11[3]._M_parent = (type_3)0x0;
  (*var_2->_vptr_Object[8])(var_2,p_Var11);
  var_17 = &(this->members_)._M_t._M_impl.super__Rb_tree_header;
  var_4 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  p_Var12 = &var_17->_M_header;
  if (var_4 == (type_5 *)0x0) {
LAB_00196920:
    var_13 = (type_5 *)var_3(0x24);
    var_13[1]._M_left = (type_3)0x0;
    var_13[1]._M_color = (type_7)off;
    var_13[1]._M_parent = (type_3)off._4_4_;
    var_13[1]._M_right = (type_3)0x0;
    var_13[2]._M_color = _S_red;
    if (((this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count == 0) ||
       (p_Var12 = (this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right,
       var_9 = (type_6)(p_Var12[1]._M_color < var_5), var_8 = (int)p_Var12[1]._M_parent - var_6,
       (var_7((int)p_Var12[1]._M_parent,var_6) != var_7(var_8,var_9)) ==
       (int)(var_8 - var_9) < 0)) {
      std::
      _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::var_10>,_std::_Select1st<std::pair<long_long_int_const,_gold::var_10>var_11>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::var_10>var_11>var_11>
      ::var_12(&(this->members_)._M_t,(type_9 *)(var_13 + 1));
LAB_001969b3:
      var_18 = var_14;
      p_Var12 = var_16;
      if (var_14 == (type_5 *)0x0) {
LAB_001969ca:
        var_15(var_13);
        var_18 = p_Var12;
        goto LAB_001968f4;
      }
LAB_001969b7:
      bVar15 = var_16 != (type_5 *)0x0;
      p_Var12 = var_18;
    }
    else {
LAB_0019691a:
      bVar15 = false;
    }
  }
  else {
    do {
      while (var_18 = var_4, var_9 = (type_6)(var_18[1]._M_color < (type_7)off),
            var_8 = (int)var_18[1]._M_parent - off._4_4_,
            (var_7((int)var_18[1]._M_parent,off._4_4_) != var_7(var_8,var_9)) !=
            (int)(var_8 - var_9) < 0) {
        pp_Var1 = &var_18->_M_right;
        var_4 = *pp_Var1;
        var_18 = p_Var12;
        if (*pp_Var1 == (type_3)0x0) goto LAB_001967a0;
      }
      var_4 = var_18->_M_left;
      p_Var12 = var_18;
    } while (var_18->_M_left != (type_3)0x0);
LAB_001967a0:
    if (var_17 == (type_4 *)var_18) goto LAB_00196920;
    var_9 = (type_6)((type_7)off < var_18[1]._M_color);
    var_8 = off._4_4_ - (int)var_18[1]._M_parent;
    if ((var_7(off._4_4_,(int)var_18[1]._M_parent) != var_7(var_8,var_9)) ==
        (int)(var_8 - var_9) < 0) goto LAB_001968f4;
    var_13 = (type_5 *)var_3(0x24);
    var_13[1]._M_left = (type_3)0x0;
    var_4 = var_13 + 1;
    var_4->_M_color = (type_7)off;
    var_4->_M_parent = (type_3)off._4_4_;
    p_Var5 = var_18[1]._M_parent;
    var_13[1]._M_right = (type_3)0x0;
    var_13[2]._M_color = _S_red;
    var_9 = (type_6)(var_5 < var_18[1]._M_color);
    p_Var12 = var_18;
    if ((var_7(var_6,(int)p_Var5) != var_7(var_6 - (int)p_Var5,var_9)) ==
        (int)((var_6 - (int)p_Var5) - var_9) < 0) {
      var_9 = (type_6)(var_18[1]._M_color < var_5);
      if ((var_7((int)p_Var5,var_6) != var_7((int)p_Var5 - var_6,var_9)) ==
          (int)(((int)p_Var5 - var_6) - var_9) < 0) goto LAB_001969ca;
      if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right != var_18) {
        p_Var12 = (type_5 *)std::var_19(var_18);
        var_9 = (type_6)(var_5 < p_Var12[1]._M_color);
        var_8 = var_6 - (int)p_Var12[1]._M_parent;
        if ((var_7(var_6,(int)p_Var12[1]._M_parent) != var_7(var_8,var_9)) ==
            (int)(var_8 - var_9) < 0) goto LAB_00196a00;
        if (var_18->_M_right == (type_3)0x0) {
          p_Var12 = var_18;
        }
        bVar15 = var_18->_M_right != (type_3)0x0;
        goto LAB_001968c7;
      }
      goto LAB_0019691a;
    }
    if ((this->members_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left != var_18) {
      p_Var12 = (type_5 *)std::var_20(var_18);
      var_9 = (type_6)(p_Var12[1]._M_color < var_5);
      var_8 = (int)p_Var12[1]._M_parent - var_6;
      if ((var_7((int)p_Var12[1]._M_parent,var_6) != var_7(var_8,var_9)) ==
          (int)(var_8 - var_9) < 0) {
LAB_00196a00:
        std::
        _Rb_tree<long_long_int,_std::pair<long_long_int_const,_gold::var_10>,_std::_Select1st<std::pair<long_long_int_const,_gold::var_10>var_11>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_gold::var_10>var_11>var_11>
        ::var_12(&(this->members_)._M_t,(type_9 *)var_4);
        goto LAB_001969b3;
      }
      var_16 = var_18;
      if (p_Var12->_M_right == (type_3)0x0) goto LAB_0019691a;
      goto LAB_001969b7;
    }
    bVar15 = true;
  }
LAB_001968c7:
  if (((type_4 *)p_Var12 == var_17) || (bVar15)) {
    bVar15 = true;
  }
  else {
    var_9 = (type_6)(var_5 < p_Var12[1]._M_color);
    var_8 = var_6 - (int)p_Var12[1]._M_parent;
    bVar15 = (var_7(var_6,(int)p_Var12[1]._M_parent) != var_7(var_8,var_9)) !=
             (int)(var_8 - var_9) < 0;
  }
  std::var_21(bVar15,var_13,p_Var12,&var_17->_M_header);
  psVar3 = &(this->members_)._M_t._M_impl.super__Rb_tree_header._M_node_count;
  *psVar3 = *psVar3 + 1;
  var_18 = var_13;
LAB_001968f4:
  var_18[2]._M_color = _S_red;
  var_18[1]._M_left = (type_3)var_2;
  var_18[1]._M_right = p_Var11;
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,uint param_2,uint param_3)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  undefined4 *puVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  uint *puVar13;
  bool bVar14;
  undefined4 uStack_50;
  undefined1 auStack_4c [8];
  uint local_44;
  uint local_40;
  int *local_3c;
  undefined4 *local_38;
  uint *local_34;
  uint *local_30;
  uint *local_2c;
  uint *local_28;
  uint *local_24 [4];
  undefined4 uStack_14;
  
  uStack_14 = 0x1966d9;
  local_44 = param_2;
  local_40 = param_3;
  uStack_50 = 0;
  piVar5 = (int *)FUN_00196220(param_1,param_2,param_3);
  if (piVar5 == (int *)0x0) {
    return;
  }
  local_3c = piVar5;
  puVar6 = (undefined4 *)FUN_001e5210(0x40);
  *puVar6 = 0;
  puVar6[1] = 0;
  puVar6[3] = 0;
  puVar6[6] = 0;
  puVar6[8] = 0;
  puVar6[10] = 0;
  puVar6[0xd] = 0;
  local_38 = puVar6;
  (**(code **)(*piVar5 + 0x20))(piVar5,puVar6);
  local_34 = (uint *)(param_1 + 0x98);
  puVar12 = (undefined4 *)auStack_4c;
  puVar7 = *(uint **)(param_1 + 0x9c);
  puVar8 = local_34;
  if (*(uint **)(param_1 + 0x9c) == (uint *)0x0) {
LAB_00196920:
    puVar8 = (uint *)FUN_001e5210(0x24);
    puVar8[6] = 0;
    puVar8[4] = local_44;
    puVar8[5] = local_40;
    puVar8[7] = 0;
    puVar8[8] = 0;
    if ((*(int *)(param_1 + 0xa8) != 0) &&
       (puVar7 = *(uint **)(param_1 + 0xa4), iVar2 = puVar7[5] - local_40,
       (SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) !=
       (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0)) {
LAB_0019691a:
      bVar14 = false;
      goto LAB_001968c5;
    }
    local_30 = puVar8;
    FUN_001989e0(local_24,param_1 + 0x94,puVar8 + 4);
    puVar9 = local_24[0];
    puVar8 = local_34;
LAB_001969b3:
    puVar11 = &uStack_50;
    puVar12 = &uStack_50;
    puVar7 = local_28;
    puVar13 = local_28;
    if (puVar9 == (uint *)0x0) {
LAB_001969ca:
      *(uint **)((int)puVar12 + -0x10) = puVar8;
      *(undefined4 *)((int)puVar12 + -0x14) = 0x1969d3;
      FUN_001e6dc0();
      puVar9 = puVar7;
      goto LAB_001968f4;
    }
LAB_001969b7:
    bVar14 = puVar13 != (uint *)0x0;
    puVar7 = puVar9;
    puVar12 = puVar11;
  }
  else {
    do {
      while (puVar9 = puVar7, iVar2 = puVar9[5] - local_40,
            (SBORROW4(puVar9[5],local_40) != SBORROW4(iVar2,(uint)(puVar9[4] < local_44))) !=
            (int)(iVar2 - (uint)(puVar9[4] < local_44)) < 0) {
        puVar13 = puVar9 + 3;
        puVar7 = (uint *)*puVar13;
        puVar9 = puVar8;
        if ((uint *)*puVar13 == (uint *)0x0) goto LAB_001967a0;
      }
      puVar7 = (uint *)puVar9[2];
      puVar8 = puVar9;
    } while ((uint *)puVar9[2] != (uint *)0x0);
LAB_001967a0:
    local_3c = piVar5;
    local_38 = puVar6;
    if (local_34 == puVar9) goto LAB_00196920;
    iVar2 = local_40 - puVar9[5];
    if ((SBORROW4(local_40,puVar9[5]) != SBORROW4(iVar2,(uint)(local_44 < puVar9[4]))) ==
        (int)(iVar2 - (uint)(local_44 < puVar9[4])) < 0) goto LAB_001968f4;
    local_2c = (uint *)(param_1 + 0x94);
    puVar8 = (uint *)FUN_001e5210(0x24);
    uVar4 = local_40;
    uVar3 = local_44;
    puVar8[6] = 0;
    local_30 = puVar8 + 4;
    *local_30 = local_44;
    puVar8[5] = local_40;
    uVar10 = puVar9[5];
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar12 = (undefined4 *)auStack_4c;
    uVar1 = (uint)(local_44 < puVar9[4]);
    puVar7 = puVar9;
    if ((SBORROW4(local_40,uVar10) != SBORROW4(local_40 - uVar10,uVar1)) ==
        (int)((local_40 - uVar10) - uVar1) < 0) {
      uVar1 = (uint)(puVar9[4] < local_44);
      if ((SBORROW4(uVar10,local_40) != SBORROW4(uVar10 - local_40,uVar1)) ==
          (int)((uVar10 - local_40) - uVar1) < 0) goto LAB_001969ca;
      if (*(uint **)(param_1 + 0xa4) != puVar9) {
        local_28 = puVar8;
        puVar7 = (uint *)FUN_001e83a0(puVar9);
        iVar2 = uVar4 - puVar7[5];
        if ((SBORROW4(uVar4,puVar7[5]) != SBORROW4(iVar2,(uint)(uVar3 < puVar7[4]))) ==
            (int)(iVar2 - (uint)(uVar3 < puVar7[4])) < 0) goto LAB_00196a00;
        if (puVar9[3] == 0) {
          puVar7 = puVar9;
        }
        bVar14 = puVar9[3] != 0;
        puVar8 = local_28;
        goto LAB_001968c5;
      }
      goto LAB_0019691a;
    }
    if (*(uint **)(param_1 + 0xa0) != puVar9) {
      local_28 = puVar8;
      puVar7 = (uint *)FUN_001e8400(puVar9);
      puVar11 = (undefined4 *)auStack_4c;
      iVar2 = puVar7[5] - local_40;
      if ((SBORROW4(puVar7[5],local_40) != SBORROW4(iVar2,(uint)(puVar7[4] < local_44))) ==
          (int)(iVar2 - (uint)(puVar7[4] < local_44)) < 0) {
LAB_00196a00:
        FUN_001989e0(local_24,local_2c,local_30);
        puVar9 = local_24[0];
        puVar8 = local_2c;
        goto LAB_001969b3;
      }
      puVar8 = local_28;
      puVar13 = puVar9;
      if (puVar7[3] == 0) goto LAB_0019691a;
      goto LAB_001969b7;
    }
    bVar14 = true;
LAB_001968c5:
    puVar12 = (undefined4 *)auStack_4c;
  }
  if ((puVar7 == *(uint **)((int)puVar12 + 0x18)) || (bVar14)) {
    uVar10 = 1;
  }
  else {
    iVar2 = *(int *)((int)puVar12 + 0xc) - puVar7[5];
    uVar10 = (uint)((SBORROW4(*(int *)((int)puVar12 + 0xc),puVar7[5]) !=
                    SBORROW4(iVar2,(uint)(*(uint *)((int)puVar12 + 8) < puVar7[4]))) !=
                   (int)(iVar2 - (uint)(*(uint *)((int)puVar12 + 8) < puVar7[4])) < 0);
  }
  *(undefined4 *)((int)puVar12 + -4) = *(undefined4 *)((int)puVar12 + 0x18);
  *(uint **)((int)puVar12 + -8) = puVar7;
  *(uint **)((int)puVar12 + -0xc) = puVar8;
  *(uint *)((int)puVar12 + -0x10) = uVar10;
  *(undefined4 *)((int)puVar12 + -0x14) = 0x1968e6;
  FUN_001e84e0();
  *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) =
       *(int *)(*(int *)((int)puVar12 + 0x50) + 0xa8) + 1;
  puVar9 = puVar8;
LAB_001968f4:
  uVar10 = *(uint *)((int)puVar12 + 0x10);
  puVar9[8] = 0;
  puVar9[6] = uVar10;
  puVar9[7] = *(uint *)((int)puVar12 + 0x14);
  return;
}

