
/* DWARF original prototype: uchar * get_new_abbrev(Output_reduced_debug_abbrev_section * this,
   uint64_t * abbrev_number, uint64_t abbrev_offset) */

uchar * __thiscall
gold::Output_reduced_debug_abbrev_section::get_new_abbrev
          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)

{
  _Base_ptr *pp_Var1;
  _Rb_tree_header *p_Var2;
  _Base_ptr p_Var3;
  undefined4 uVar4;
  int iVar5;
  pointer puVar6;
  uint64_t uVar7;
  _Base_ptr p_Var8;
  _Rb_tree_header *p_Var9;
  const_iterator in_stack_ffffffa8;
  tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&> *in_stack_ffffffac;
  tuple<> *in_stack_ffffffb0;
  _Rb_tree_header *local_40;
  uint64_t *local_30;
  uint64_t local_2c;
  _Base_ptr local_24;
  _Base_ptr local_20;
  
  (*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this);
  local_24 = *(_Base_ptr *)abbrev_number;
  local_20 = *(_Base_ptr *)((int)abbrev_number + 4);
  p_Var2 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;
  p_Var3 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  p_Var8 = &p_Var2->_M_header;
  if (p_Var3 != (_Base_ptr)0x0) {
    do {
      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),
             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,
             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||
             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <
             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||
             ((abbrev_offset == uVar7 &&
              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||
               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <
               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {
        pp_Var1 = &(p_Var9->_M_header)._M_right;
        p_Var3 = *pp_Var1;
        p_Var9 = (_Rb_tree_header *)p_Var8;
        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;
      }
      p_Var3 = (p_Var9->_M_header)._M_left;
      p_Var8 = &p_Var9->_M_header;
    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);
LAB_001451ad:
    if (((p_Var2 != p_Var9) &&
        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&
         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=
         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&
       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||
        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&
         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=
         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;
  }
  local_30 = &local_2c;
  local_2c = abbrev_offset;
  std::
  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>
  ::
  _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&>,_std::tuple<>_>
            ((_Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>
              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,
             (piecewise_construct_t *)local_24);
  p_Var9 = local_40;
LAB_001451eb:
  uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10);
  iVar5 = *(int *)(p_Var9 + 2);
  puVar6 = (this->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
           _M_start;
  *(undefined4 *)abbrev_number = *(undefined4 *)((int)(p_Var9 + 1) + 0xc);
  *(undefined4 *)((int)abbrev_number + 4) = uVar4;
  return puVar6 + iVar5;
}



int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *local_40;
  uint *local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  
  (**(code **)(*param_1 + 0x38))(param_1);
  local_2c = param_3;
  local_24 = *param_2;
  local_20 = param_2[1];
  local_28 = param_4;
  piVar5 = (int *)param_1[0x3f];
  piVar6 = param_1 + 0x3e;
  if ((int *)param_1[0x3f] != (int *)0x0) {
    do {
      while( true ) {
        piVar7 = piVar5;
        uVar2 = piVar7[5];
        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&
           ((uVar2 != param_4 || piVar7[4] != param_3 ||
            (local_20 <= (uint)piVar7[7] &&
             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;
        piVar1 = piVar7 + 3;
        piVar5 = (int *)*piVar1;
        piVar7 = piVar6;
        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;
      }
      piVar5 = (int *)piVar7[2];
      piVar6 = piVar7;
    } while ((int *)piVar7[2] != (int *)0x0);
LAB_001451ad:
    if (param_1 + 0x3e != piVar7) {
      uVar2 = piVar7[5];
      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&
         ((param_4 != uVar2 || param_3 != piVar7[4] ||
          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]
          )))) goto LAB_001451eb;
    }
  }
  local_30 = &local_2c;
  FUN_00144830(&local_30);
  piVar7 = local_40;
LAB_001451eb:
  uVar2 = piVar7[9];
  iVar3 = piVar7[10];
  iVar4 = param_1[0x3a];
  *param_2 = piVar7[8];
  param_2[1] = uVar2;
  return iVar3 + iVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x48
MOV EBX,dword ptr [ESP + 0x5c]
MOV ESI,dword ptr [ESP + 0x64]
MOV EDI,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [EBX]
PUSH EBX
CALL dword ptr [EAX + 0x38]
MOV EAX,dword ptr [ESP + 0x64]
MOV ECX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x30],ESI
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [ECX + 0x4]
MOV dword ptr [ESP + 0x34],EDI
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x38],EAX
LEA EAX,[EBX + 0xf8]
MOV dword ptr [ESP + 0x18],EAX
MOV ECX,EAX
MOV EAX,dword ptr [EBX + 0xfc]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x3c],EDX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00145230
MOV dword ptr [ESP + 0x50],EBX
JMP 0x00145198
XOR EDX,ESI
XOR EBP,EDI
OR EBP,EDX
JNZ 0x0014518f
MOV EDX,dword ptr [EAX + 0x1c]
MOV EBX,dword ptr [ESP]
CMP dword ptr [EAX + 0x18],EBX
SBB EDX,dword ptr [ESP + 0x4]
JC 0x001451a6
MOV ECX,EAX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x001451ad
MOV EDX,dword ptr [EAX + 0x10]
MOV EBP,dword ptr [EAX + 0x14]
CMP EDX,ESI
MOV EBX,EBP
SBB EBX,EDI
JNC 0x00145178
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x00145198
MOV EBX,dword ptr [ESP + 0x50]
CMP dword ptr [ESP + 0x8],ECX
JZ 0x001451c5
MOV EDX,dword ptr [ECX + 0x10]
MOV EAX,dword ptr [ECX + 0x14]
MOV EBP,EDI
CMP ESI,EDX
SBB EBP,EAX
JNC 0x00145210
LEA EAX,[ESP + 0x20]
LEA EDX,[EBX + 0xf4]
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[ESP + 0xc]
SUB ESP,0xc
LEA ESI,[ESP + 0x28]
PUSH ESI
CALL 0x00144830
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV ESI,dword ptr [ECX + 0x20]
MOV EDI,dword ptr [ECX + 0x24]
MOV EAX,dword ptr [ECX + 0x28]
MOV ECX,dword ptr [ESP + 0x54]
ADD EAX,dword ptr [EBX + 0xe8]
MOV dword ptr [ECX],ESI
MOV dword ptr [ECX + 0x4],EDI
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR ESI,EDX
XOR EDI,EAX
OR EDI,ESI
JNZ 0x001451eb
MOV EAX,dword ptr [ESP]
CMP EAX,dword ptr [ECX + 0x18]
MOV EAX,dword ptr [ESP + 0x4]
SBB EAX,dword ptr [ECX + 0x1c]
JNC 0x001451eb
JMP 0x001451c5
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x001451c5
(translation_unit "int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}\n\n" (function_definition "int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" primitive_type (function_declarator "FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)" identifier (parameter_list "(int *param_1,uint *param_2,uint param_3,uint param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "(**(code **)(*param_1 + 0x38))(param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_2c = param_3;" (assignment_expression "local_2c = param_3" identifier = identifier) ;) (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_20 = param_2[1];" (assignment_expression "local_20 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_4;" (assignment_expression "local_28 = param_4" identifier = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x3f];" (assignment_expression "piVar5 = (int *)param_1[0x3f]" identifier = (cast_expression "(int *)param_1[0x3f]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x3f]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = param_1 + 0x3e;" (assignment_expression "piVar6 = param_1 + 0x3e" identifier = (binary_expression "param_1 + 0x3e" identifier + number_literal)) ;) (if_statement "if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" if (parenthesized_expression "((int *)param_1[0x3f] != (int *)0x0)" ( (binary_expression "(int *)param_1[0x3f] != (int *)0x0" (cast_expression "(int *)param_1[0x3f]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x3f]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" { (do_statement "do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);" do (compound_statement "{\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    }" { (while_statement "while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" { (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" identifier = identifier) ;) (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" identifier = (subscript_expression "piVar7[5]" identifier [ number_literal ])) ;) (if_statement "if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;" if (parenthesized_expression "((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))))" ( (binary_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" (parenthesized_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4)" ( (binary_expression "param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (binary_expression "param_4 <= uVar2" identifier <= identifier) && (binary_expression "(uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (call_expression "(uint)((uint)piVar7[4] < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)piVar7[4] < param_3)" ( (binary_expression "(uint)piVar7[4] < param_3" (cast_expression "(uint)piVar7[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[4]" identifier [ number_literal ])) < identifier) ))) <= (binary_expression "uVar2 - param_4" identifier - identifier))) )) && (parenthesized_expression "((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" ( (parenthesized_expression "(uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))" ( (binary_expression "uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" (binary_expression "uVar2 != param_4 || piVar7[4] != param_3" (binary_expression "uVar2 != param_4" identifier != identifier) || (binary_expression "piVar7[4] != param_3" (subscript_expression "piVar7[4]" identifier [ number_literal ]) != identifier)) || (parenthesized_expression "(local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" ( (binary_expression "local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (binary_expression "local_20 <= (uint)piVar7[7]" identifier <= (cast_expression "(uint)piVar7[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[7]" identifier [ number_literal ]))) && (binary_expression "(uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (call_expression "(uint)((uint)piVar7[6] < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)piVar7[6] < local_24)" ( (binary_expression "(uint)piVar7[6] < local_24" (cast_expression "(uint)piVar7[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[6]" identifier [ number_literal ])) < identifier) ))) <= (binary_expression "piVar7[7] - local_20" (subscript_expression "piVar7[7]" identifier [ number_literal ]) - identifier))) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar1 = piVar7 + 3;" (assignment_expression "piVar1 = piVar7 + 3" identifier = (binary_expression "piVar7 + 3" identifier + number_literal)) ;) (expression_statement "piVar5 = (int *)*piVar1;" (assignment_expression "piVar5 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) (if_statement "if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;" if (parenthesized_expression "((int *)*piVar1 == (int *)0x0)" ( (binary_expression "(int *)*piVar1 == (int *)0x0" (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001451ad;" goto statement_identifier ;)) })) (expression_statement "piVar5 = (int *)piVar7[2];" (assignment_expression "piVar5 = (int *)piVar7[2]" identifier = (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = piVar7;" (assignment_expression "piVar6 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "((int *)piVar7[2] != (int *)0x0)" ( (binary_expression "(int *)piVar7[2] != (int *)0x0" (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" statement_identifier : (if_statement "if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" if (parenthesized_expression "(param_1 + 0x3e != piVar7)" ( (binary_expression "param_1 + 0x3e != piVar7" (binary_expression "param_1 + 0x3e" identifier + number_literal) != identifier) )) (compound_statement "{\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" { (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" identifier = (subscript_expression "piVar7[5]" identifier [ number_literal ])) ;) (if_statement "if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;" if (parenthesized_expression "((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))))" ( (binary_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" (parenthesized_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2)" ( (binary_expression "uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (binary_expression "uVar2 <= param_4" identifier <= identifier) && (binary_expression "(uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (call_expression "(uint)(param_3 < (uint)piVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 < (uint)piVar7[4])" ( (binary_expression "param_3 < (uint)piVar7[4]" identifier < (cast_expression "(uint)piVar7[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[4]" identifier [ number_literal ]))) ))) <= (binary_expression "param_4 - uVar2" identifier - identifier))) )) && (parenthesized_expression "((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" ( (parenthesized_expression "(param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))" ( (binary_expression "param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" (binary_expression "param_4 != uVar2 || param_3 != piVar7[4]" (binary_expression "param_4 != uVar2" identifier != identifier) || (binary_expression "param_3 != piVar7[4]" identifier != (subscript_expression "piVar7[4]" identifier [ number_literal ]))) || (parenthesized_expression "((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" ( (binary_expression "(uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (binary_expression "(uint)piVar7[7] <= local_20" (cast_expression "(uint)piVar7[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[7]" identifier [ number_literal ])) <= identifier) && (binary_expression "(uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (call_expression "(uint)(local_24 < (uint)piVar7[6])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < (uint)piVar7[6])" ( (binary_expression "local_24 < (uint)piVar7[6]" identifier < (cast_expression "(uint)piVar7[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[6]" identifier [ number_literal ]))) ))) <= (binary_expression "local_20 - piVar7[7]" identifier - (subscript_expression "piVar7[7]" identifier [ number_literal ])))) ))) )) ))) )) (goto_statement "goto LAB_001451eb;" goto statement_identifier ;)) }))) })) (expression_statement "local_30 = &local_2c;" (assignment_expression "local_30 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "FUN_00144830(&local_30);" (call_expression "FUN_00144830(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "piVar7 = local_40;" (assignment_expression "piVar7 = local_40" identifier = identifier) ;) (labeled_statement "LAB_001451eb:\n  uVar2 = piVar7[9];" statement_identifier : (expression_statement "uVar2 = piVar7[9];" (assignment_expression "uVar2 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;)) (expression_statement "iVar3 = piVar7[10];" (assignment_expression "iVar3 = piVar7[10]" identifier = (subscript_expression "piVar7[10]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = param_1[0x3a];" (assignment_expression "iVar4 = param_1[0x3a]" identifier = (subscript_expression "param_1[0x3a]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = piVar7[8];" (assignment_expression "*param_2 = piVar7[8]" (pointer_expression "*param_2" * identifier) = (subscript_expression "piVar7[8]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar3 + iVar4;" return (binary_expression "iVar3 + iVar4" identifier + identifier) ;) })))
(translation_unit "/* DWARF original prototype: uchar * get_new_abbrev(Output_reduced_debug_abbrev_section * this,\n   uint64_t * abbrev_number, uint64_t abbrev_offset) */\n\nuchar * __thiscall\ngold::Output_reduced_debug_abbrev_section::get_new_abbrev\n          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)\n\n{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  _Base_ptr p_Var3;\n  undefined4 uVar4;\n  int iVar5;\n  pointer puVar6;\n  uint64_t uVar7;\n  _Base_ptr p_Var8;\n  _Rb_tree_header *p_Var9;\n  const_iterator in_stack_ffffffa8;\n  tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&> *in_stack_ffffffac;\n  tuple<> *in_stack_ffffffb0;\n  _Rb_tree_header *local_40;\n  uint64_t *local_30;\n  uint64_t local_2c;\n  _Base_ptr local_24;\n  _Base_ptr local_20;\n  \n  (*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this);\n  local_24 = *(_Base_ptr *)abbrev_number;\n  local_20 = *(_Base_ptr *)((int)abbrev_number + 4);\n  p_Var2 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n  p_Var3 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  p_Var8 = &p_Var2->_M_header;\n  if (p_Var3 != (_Base_ptr)0x0) {\n    do {\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_001451ad:\n    if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;\n  }\n  local_30 = &local_2c;\n  local_2c = abbrev_offset;\n  std::\n  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&>,_std::tuple<>_>\n            ((_Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24);\n  p_Var9 = local_40;\nLAB_001451eb:\n  uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10);\n  iVar5 = *(int *)(p_Var9 + 2);\n  puVar6 = (this->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n           _M_start;\n  *(undefined4 *)abbrev_number = *(undefined4 *)((int)(p_Var9 + 1) + 0xc);\n  *(undefined4 *)((int)abbrev_number + 4) = uVar4;\n  return puVar6 + iVar5;\n}\n\n" comment (ERROR "uchar * __thiscall\ngold::Output_reduced_debug_abbrev_section::get_new_abbrev\n          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)" (binary_expression "uchar * __thiscall\ngold::Output_reduced_debug_abbrev_section::get_new_abbrev\n          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)" identifier * (call_expression "__thiscall\ngold::Output_reduced_debug_abbrev_section::get_new_abbrev\n          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)" identifier (ERROR "gold::Output_reduced_debug_abbrev_section::get_new_abbrev" identifier : : identifier : : identifier) (argument_list "(Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t abbrev_offset)" ( (binary_expression "Output_reduced_debug_abbrev_section *this" identifier * identifier) , (binary_expression "uint64_t *abbrev_number" identifier * identifier) , (ERROR "uint64_t" identifier) identifier ))))) (compound_statement "{\n  _Base_ptr *pp_Var1;\n  _Rb_tree_header *p_Var2;\n  _Base_ptr p_Var3;\n  undefined4 uVar4;\n  int iVar5;\n  pointer puVar6;\n  uint64_t uVar7;\n  _Base_ptr p_Var8;\n  _Rb_tree_header *p_Var9;\n  const_iterator in_stack_ffffffa8;\n  tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&> *in_stack_ffffffac;\n  tuple<> *in_stack_ffffffb0;\n  _Rb_tree_header *local_40;\n  uint64_t *local_30;\n  uint64_t local_2c;\n  _Base_ptr local_24;\n  _Base_ptr local_20;\n  \n  (*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this);\n  local_24 = *(_Base_ptr *)abbrev_number;\n  local_20 = *(_Base_ptr *)((int)abbrev_number + 4);\n  p_Var2 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n  p_Var3 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n  p_Var8 = &p_Var2->_M_header;\n  if (p_Var3 != (_Base_ptr)0x0) {\n    do {\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_001451ad:\n    if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;\n  }\n  local_30 = &local_2c;\n  local_2c = abbrev_offset;\n  std::\n  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&>,_std::tuple<>_>\n            ((_Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24);\n  p_Var9 = local_40;\nLAB_001451eb:\n  uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10);\n  iVar5 = *(int *)(p_Var9 + 2);\n  puVar6 = (this->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n           _M_start;\n  *(undefined4 *)abbrev_number = *(undefined4 *)((int)(p_Var9 + 1) + 0xc);\n  *(undefined4 *)((int)abbrev_number + 4) = uVar4;\n  return puVar6 + iVar5;\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 "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "pointer puVar6;" type_identifier identifier ;) (declaration "uint64_t uVar7;" primitive_type identifier ;) (declaration "_Base_ptr p_Var8;" type_identifier identifier ;) (declaration "_Rb_tree_header *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "const_iterator in_stack_ffffffa8;" type_identifier identifier ;) (expression_statement "tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&> *in_stack_ffffffac;" (comma_expression "tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&> *in_stack_ffffffac" (binary_expression "tuple<std::pair<long_long_unsigned_int" (binary_expression "tuple<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_long_unsigned_int>&&> *in_stack_ffffffac" identifier > (pointer_expression "&&> *in_stack_ffffffac" & (pointer_expression "&> *in_stack_ffffffac" & (ERROR ">" >) (pointer_expression "*in_stack_ffffffac" * identifier))))) ;) (expression_statement "tuple<> *in_stack_ffffffb0;" (binary_expression "tuple<> *in_stack_ffffffb0" identifier < (ERROR ">" >) (pointer_expression "*in_stack_ffffffb0" * identifier)) ;) (declaration "_Rb_tree_header *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint64_t *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "uint64_t local_2c;" primitive_type identifier ;) (declaration "_Base_ptr local_24;" type_identifier identifier ;) (declaration "_Base_ptr local_20;" type_identifier identifier ;) (expression_statement "(*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this);" (call_expression "(*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this)" (parenthesized_expression "(*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])" ( (pointer_expression "*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe]" * (subscript_expression "(this->super_Output_section).super_Output_data._vptr_Output_data[0xe]" (field_expression "(this->super_Output_section).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section).super_Output_data" (parenthesized_expression "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier ))) ;) (expression_statement "local_24 = *(_Base_ptr *)abbrev_number;" (assignment_expression "local_24 = *(_Base_ptr *)abbrev_number" identifier = (pointer_expression "*(_Base_ptr *)abbrev_number" * (cast_expression "(_Base_ptr *)abbrev_number" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_20 = *(_Base_ptr *)((int)abbrev_number + 4);" (assignment_expression "local_20 = *(_Base_ptr *)((int)abbrev_number + 4)" identifier = (pointer_expression "*(_Base_ptr *)((int)abbrev_number + 4)" * (cast_expression "(_Base_ptr *)((int)abbrev_number + 4)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)abbrev_number + 4)" ( (binary_expression "(int)abbrev_number + 4" (cast_expression "(int)abbrev_number" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "p_Var2 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var2 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->abbrev_mapping_)._M_t._M_impl" (field_expression "(this->abbrev_mapping_)._M_t" (parenthesized_expression "(this->abbrev_mapping_)" ( (field_expression "this->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p_Var3 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var3 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->abbrev_mapping_)._M_t._M_impl" (field_expression "(this->abbrev_mapping_)._M_t" (parenthesized_expression "(this->abbrev_mapping_)" ( (field_expression "this->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var8 = &p_Var2->_M_header;" (assignment_expression "p_Var8 = &p_Var2->_M_header" identifier = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var3 != (_Base_ptr)0x0) {\n    do {\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_001451ad:\n    if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;\n  }" if (parenthesized_expression "(p_Var3 != (_Base_ptr)0x0)" ( (binary_expression "p_Var3 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    do {\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);\nLAB_001451ad:\n    if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;\n  }" { (do_statement "do {\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    } while ((p_Var9->_M_header)._M_left != (_Base_ptr)0x0);" do (compound_statement "{\n      while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }\n      p_Var3 = (p_Var9->_M_header)._M_left;\n      p_Var8 = &p_Var9->_M_header;\n    }" { (while_statement "while ((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))) {\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }" while (parenthesized_expression "((p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))))" ( (parenthesized_expression "(p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))))" ( (comma_expression "p_Var9 = (_Rb_tree_header *)p_Var3, p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" (assignment_expression "p_Var9 = (_Rb_tree_header *)p_Var3" identifier = (cast_expression "(_Rb_tree_header *)p_Var3" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10),\n             uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" (assignment_expression "p_Var3 = (_Base_ptr)((int)p_Var9 + 0x10)" identifier = (call_expression "(_Base_ptr)((int)p_Var9 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (comma_expression "uVar7._0_4_ = p_Var3->_M_color, uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" (assignment_expression "uVar7._0_4_ = p_Var3->_M_color" (field_expression "uVar7._0_4_" identifier . field_identifier) = (field_expression "p_Var3->_M_color" identifier -> field_identifier)) , (comma_expression "uVar7._4_4_ = p_Var3->_M_parent,\n             ((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" (assignment_expression "uVar7._4_4_ = p_Var3->_M_parent" (field_expression "uVar7._4_4_" identifier . field_identifier) = (field_expression "p_Var3->_M_parent" identifier -> field_identifier)) , (binary_expression "((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset) ||\n             ((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" (binary_expression "((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_ ||\n             (uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset)" (binary_expression "((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent < abbrev_offset._4_4_" (field_expression "((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent" (parenthesized_expression "((_Base_ptr)((int)p_Var9 + 0x10))" ( (call_expression "(_Base_ptr)((int)p_Var9 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier) < (field_expression "abbrev_offset._4_4_" identifier . field_identifier)) || (binary_expression "(uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_) <\n             (uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset)" (call_expression "(uint)((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_)" ( (binary_expression "(int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent - (int)abbrev_offset._4_4_" (cast_expression "(int)((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent" ( (type_descriptor "int" primitive_type) ) (field_expression "((_Base_ptr)((int)p_Var9 + 0x10))->_M_parent" (parenthesized_expression "((_Base_ptr)((int)p_Var9 + 0x10))" ( (call_expression "(_Base_ptr)((int)p_Var9 + 0x10)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) -> field_identifier)) - (cast_expression "(int)abbrev_offset._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "abbrev_offset._4_4_" identifier . field_identifier))) ))) < (call_expression "(uint)(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(p_Var3->_M_color < (_Rb_tree_color)abbrev_offset)" ( (binary_expression "p_Var3->_M_color < (_Rb_tree_color)abbrev_offset" (field_expression "p_Var3->_M_color" identifier -> field_identifier) < (cast_expression "(_Rb_tree_color)abbrev_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier)) ))))) || (parenthesized_expression "((abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))))" ( (parenthesized_expression "(abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)))" ( (binary_expression "abbrev_offset == uVar7 &&\n              ((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))" (binary_expression "abbrev_offset == uVar7" identifier == identifier) && (parenthesized_expression "((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24))" ( (binary_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20 ||\n               (uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)" (binary_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3] < local_20" (subscript_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[3]" (call_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((size_t *)((int)p_Var9 + 0x10))" ( (cast_expression "(size_t *)((int)p_Var9 + 0x10)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) [ number_literal ]) < identifier) || (binary_expression "(uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20) <\n               (uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)" (call_expression "(uint)((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20)" ( (binary_expression "(int)((size_t *)((int)p_Var9 + 0x10))[3] - (int)local_20" (cast_expression "(int)((size_t *)((int)p_Var9 + 0x10))[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "((size_t *)((int)p_Var9 + 0x10))[3]" (parenthesized_expression "((size_t *)((int)p_Var9 + 0x10))" ( (cast_expression "(size_t *)((int)p_Var9 + 0x10)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )) [ number_literal ])) - (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < (call_expression "(uint)((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24)" ( (binary_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2] < local_24" (subscript_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))[2]" (call_expression "(_Base_ptr)((size_t *)((int)p_Var9 + 0x10))" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "((size_t *)((int)p_Var9 + 0x10))" ( (cast_expression "(size_t *)((int)p_Var9 + 0x10)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var9 + 0x10)" ( (binary_expression "(int)p_Var9 + 0x10" (cast_expression "(int)p_Var9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) [ number_literal ]) < identifier) ))))) ))) )) ))))))) )) )) (compound_statement "{\n        pp_Var1 = &(p_Var9->_M_header)._M_right;\n        p_Var3 = *pp_Var1;\n        p_Var9 = (_Rb_tree_header *)p_Var8;\n        if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;\n      }" { (expression_statement "pp_Var1 = &(p_Var9->_M_header)._M_right;" (assignment_expression "pp_Var1 = &(p_Var9->_M_header)._M_right" identifier = (pointer_expression "&(p_Var9->_M_header)._M_right" & (field_expression "(p_Var9->_M_header)._M_right" (parenthesized_expression "(p_Var9->_M_header)" ( (field_expression "p_Var9->_M_header" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "p_Var3 = *pp_Var1;" (assignment_expression "p_Var3 = *pp_Var1" identifier = (pointer_expression "*pp_Var1" * identifier)) ;) (expression_statement "p_Var9 = (_Rb_tree_header *)p_Var8;" (assignment_expression "p_Var9 = (_Rb_tree_header *)p_Var8" identifier = (cast_expression "(_Rb_tree_header *)p_Var8" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*pp_Var1 == (_Base_ptr)0x0) goto LAB_001451ad;" 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_001451ad;" goto statement_identifier ;)) })) (expression_statement "p_Var3 = (p_Var9->_M_header)._M_left;" (assignment_expression "p_Var3 = (p_Var9->_M_header)._M_left" identifier = (field_expression "(p_Var9->_M_header)._M_left" (parenthesized_expression "(p_Var9->_M_header)" ( (field_expression "p_Var9->_M_header" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var8 = &p_Var9->_M_header;" (assignment_expression "p_Var8 = &p_Var9->_M_header" identifier = (pointer_expression "&p_Var9->_M_header" & (field_expression "p_Var9->_M_header" identifier -> field_identifier))) ;) }) while (parenthesized_expression "((p_Var9->_M_header)._M_left != (_Base_ptr)0x0)" ( (binary_expression "(p_Var9->_M_header)._M_left != (_Base_ptr)0x0" (field_expression "(p_Var9->_M_header)._M_left" (parenthesized_expression "(p_Var9->_M_header)" ( (field_expression "p_Var9->_M_header" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_001451ad:\n    if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;" statement_identifier : (if_statement "if (((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))) goto LAB_001451eb;" if (parenthesized_expression "(((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))))))" ( (binary_expression "((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))) &&\n       ((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))" (parenthesized_expression "((p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1))))" ( (binary_expression "(p_Var2 != p_Var9) &&\n        (*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))" (parenthesized_expression "(p_Var2 != p_Var9)" ( (binary_expression "p_Var2 != p_Var9" identifier != identifier) )) && (parenthesized_expression "(*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)))" ( (binary_expression "*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_ &&\n         (uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1))" (binary_expression "*(_Base_ptr *)(p_Var9 + 1) <= abbrev_offset._4_4_" (pointer_expression "*(_Base_ptr *)(p_Var9 + 1)" * (cast_expression "(_Base_ptr *)(p_Var9 + 1)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) )))) <= (field_expression "abbrev_offset._4_4_" identifier . field_identifier)) && (binary_expression "(uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count) <=\n         (uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1))" (call_expression "(uint)((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count)" ( (binary_expression "(_Rb_tree_color)abbrev_offset < p_Var9->_M_node_count" (cast_expression "(_Rb_tree_color)abbrev_offset" ( (type_descriptor "_Rb_tree_color" type_identifier) ) identifier) < (field_expression "p_Var9->_M_node_count" identifier -> field_identifier)) ))) <= (call_expression "(uint)((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1))" ( (binary_expression "(int)abbrev_offset._4_4_ - (int)*(_Base_ptr *)(p_Var9 + 1)" (cast_expression "(int)abbrev_offset._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "abbrev_offset._4_4_" identifier . field_identifier)) - (cast_expression "(int)*(_Base_ptr *)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(_Base_ptr *)(p_Var9 + 1)" * (cast_expression "(_Base_ptr *)(p_Var9 + 1)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) )))))) ))))) ))) )) && (parenthesized_expression "((abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))))" ( (parenthesized_expression "(abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))))" ( (binary_expression "abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count ||\n        (*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))" (binary_expression "abbrev_offset != *(uint64_t *)&p_Var9->_M_node_count" identifier != (pointer_expression "*(uint64_t *)&p_Var9->_M_node_count" * (cast_expression "(uint64_t *)&p_Var9->_M_node_count" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var9->_M_node_count" & (field_expression "p_Var9->_M_node_count" identifier -> field_identifier))))) || (parenthesized_expression "(*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)))" ( (binary_expression "*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20 &&\n         (uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))" (binary_expression "*(_Base_ptr *)((int)(p_Var9 + 1) + 8) <= local_20" (pointer_expression "*(_Base_ptr *)((int)(p_Var9 + 1) + 8)" * (cast_expression "(_Base_ptr *)((int)(p_Var9 + 1) + 8)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var9 + 1) + 8)" ( (binary_expression "(int)(p_Var9 + 1) + 8" (cast_expression "(int)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) + number_literal) )))) <= identifier) && (binary_expression "(uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)) <=\n         (uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))" (call_expression "(uint)(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4))" ( (binary_expression "local_24 < *(_Base_ptr *)((int)(p_Var9 + 1) + 4)" identifier < (pointer_expression "*(_Base_ptr *)((int)(p_Var9 + 1) + 4)" * (cast_expression "(_Base_ptr *)((int)(p_Var9 + 1) + 4)" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var9 + 1) + 4)" ( (binary_expression "(int)(p_Var9 + 1) + 4" (cast_expression "(int)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) + number_literal) ))))) ))) <= (call_expression "(uint)((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_20 - *(int *)((int)(p_Var9 + 1) + 8))" ( (binary_expression "(int)local_20 - *(int *)((int)(p_Var9 + 1) + 8)" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)((int)(p_Var9 + 1) + 8)" * (cast_expression "(int *)((int)(p_Var9 + 1) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var9 + 1) + 8)" ( (binary_expression "(int)(p_Var9 + 1) + 8" (cast_expression "(int)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) + number_literal) ))))) ))))) ))) )) ))) )) (goto_statement "goto LAB_001451eb;" goto statement_identifier ;))) })) (expression_statement "local_30 = &local_2c;" (assignment_expression "local_30 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "local_2c = abbrev_offset;" (assignment_expression "local_2c = abbrev_offset" identifier = identifier) ;) (ERROR "std::\n  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std::tuple<std::pair<long_long_unsigned_int,_long_long_unsigned_int>&&>,_std::tuple<>_>\n            ((_Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::" (comma_expression "std::\n  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std::piecewise_construct_t&,_std" identifier (ERROR "::\n  _Rb_tree<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::_Select1st<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std::less<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std::piecewise_construct_t&" : : (binary_expression "_Rb_tree<std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>,_std" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>_>,_std" (binary_expression "_long_long_unsigned_int>_>_" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>,_std" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique<const_std" (binary_expression "_long_long_unsigned_int>_>_>_>\n  ::\n  _M_emplace_hint_unique" (binary_expression "_long_long_unsigned_int>_>_>_" (binary_expression "_long_long_unsigned_int>_>_" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) : : identifier &) , identifier) : : identifier < identifier : : identifier < identifier , identifier > && > , identifier : : identifier < > identifier > ( ( identifier < identifier : : identifier < identifier , identifier > , identifier : : identifier < identifier : : identifier < identifier , identifier > , identifier : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>,_std" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>_>,_std" (binary_expression "_long_long_unsigned_int>_>_" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>_>,_std" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>,_std" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (binary_expression "_long_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : :) (expression_statement "pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24);" (comma_expression "pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>\n              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24" (binary_expression "pair<long_long_unsigned_int" identifier < identifier) , (comma_expression "_long_long_unsigned_int>_>_>_>\n              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24" (binary_expression "_long_long_unsigned_int>_>_>_>\n              *)&local_30" (binary_expression "_long_long_unsigned_int>_>_>_" (binary_expression "_long_long_unsigned_int>_>_" (binary_expression "_long_long_unsigned_int>_" identifier > identifier) > identifier) > identifier) > (pointer_expression "*)&local_30" * (ERROR ")" )) (pointer_expression "&local_30" & identifier))) , (comma_expression "in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24" identifier , (comma_expression "in_stack_ffffffac,in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24" identifier , (comma_expression "in_stack_ffffffb0,\n             (piecewise_construct_t *)local_24" identifier , (cast_expression "(piecewise_construct_t *)local_24" ( (type_descriptor "piecewise_construct_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))))) (ERROR ")" )) ;) (expression_statement "p_Var9 = local_40;" (assignment_expression "p_Var9 = local_40" identifier = identifier) ;) (labeled_statement "LAB_001451eb:\n  uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10);" statement_identifier : (expression_statement "uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10);" (assignment_expression "uVar4 = *(undefined4 *)((int)(p_Var9 + 1) + 0x10)" identifier = (pointer_expression "*(undefined4 *)((int)(p_Var9 + 1) + 0x10)" * (cast_expression "(undefined4 *)((int)(p_Var9 + 1) + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var9 + 1) + 0x10)" ( (binary_expression "(int)(p_Var9 + 1) + 0x10" (cast_expression "(int)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) + number_literal) ))))) ;)) (expression_statement "iVar5 = *(int *)(p_Var9 + 2);" (assignment_expression "iVar5 = *(int *)(p_Var9 + 2)" identifier = (pointer_expression "*(int *)(p_Var9 + 2)" * (cast_expression "(int *)(p_Var9 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var9 + 2)" ( (binary_expression "p_Var9 + 2" identifier + number_literal) ))))) ;) (ERROR "puVar6 = (this->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "puVar6 = (this->data_).super__Vector_base<unsigned_char,_std" (assignment_expression "puVar6 = (this->data_).super__Vector_base<unsigned_char" identifier = (binary_expression "(this->data_).super__Vector_base<unsigned_char" (field_expression "(this->data_).super__Vector_base" (parenthesized_expression "(this->data_)" ( (field_expression "this->data_" identifier -> field_identifier) )) . field_identifier) < identifier)) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n           _M_start;" (field_expression "allocator<unsigned_char>_>._M_impl.\n           _M_start" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "*(undefined4 *)abbrev_number = *(undefined4 *)((int)(p_Var9 + 1) + 0xc);" (assignment_expression "*(undefined4 *)abbrev_number = *(undefined4 *)((int)(p_Var9 + 1) + 0xc)" (pointer_expression "*(undefined4 *)abbrev_number" * (cast_expression "(undefined4 *)abbrev_number" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)((int)(p_Var9 + 1) + 0xc)" * (cast_expression "(undefined4 *)((int)(p_Var9 + 1) + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var9 + 1) + 0xc)" ( (binary_expression "(int)(p_Var9 + 1) + 0xc" (cast_expression "(int)(p_Var9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var9 + 1)" ( (binary_expression "p_Var9 + 1" identifier + number_literal) ))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)abbrev_number + 4) = uVar4;" (assignment_expression "*(undefined4 *)((int)abbrev_number + 4) = uVar4" (pointer_expression "*(undefined4 *)((int)abbrev_number + 4)" * (cast_expression "(undefined4 *)((int)abbrev_number + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)abbrev_number + 4)" ( (binary_expression "(int)abbrev_number + 4" (cast_expression "(int)abbrev_number" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return puVar6 + iVar5;" return (binary_expression "puVar6 + iVar5" identifier + identifier) ;) }))
(translation_unit "int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}\n\n" (function_definition "int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" primitive_type (function_declarator "FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)" identifier (parameter_list "(int *param_1,uint *param_2,uint param_3,uint param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "(**(code **)(*param_1 + 0x38))(param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_2c = param_3;" (assignment_expression "local_2c = param_3" identifier = identifier) ;) (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_20 = param_2[1];" (assignment_expression "local_20 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_4;" (assignment_expression "local_28 = param_4" identifier = identifier) ;) (expression_statement "piVar5 = (int *)param_1[0x3f];" (assignment_expression "piVar5 = (int *)param_1[0x3f]" identifier = (cast_expression "(int *)param_1[0x3f]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x3f]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = param_1 + 0x3e;" (assignment_expression "piVar6 = param_1 + 0x3e" identifier = (binary_expression "param_1 + 0x3e" identifier + number_literal)) ;) (if_statement "if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" if (parenthesized_expression "((int *)param_1[0x3f] != (int *)0x0)" ( (binary_expression "(int *)param_1[0x3f] != (int *)0x0" (cast_expression "(int *)param_1[0x3f]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x3f]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" { (do_statement "do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);" do (compound_statement "{\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    }" { (while_statement "while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" { (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" identifier = identifier) ;) (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" identifier = (subscript_expression "piVar7[5]" identifier [ number_literal ])) ;) (if_statement "if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;" if (parenthesized_expression "((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))))" ( (binary_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" (parenthesized_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4)" ( (binary_expression "param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (binary_expression "param_4 <= uVar2" identifier <= identifier) && (binary_expression "(uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (call_expression "(uint)((uint)piVar7[4] < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)piVar7[4] < param_3)" ( (binary_expression "(uint)piVar7[4] < param_3" (cast_expression "(uint)piVar7[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[4]" identifier [ number_literal ])) < identifier) ))) <= (binary_expression "uVar2 - param_4" identifier - identifier))) )) && (parenthesized_expression "((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" ( (parenthesized_expression "(uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))" ( (binary_expression "uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" (binary_expression "uVar2 != param_4 || piVar7[4] != param_3" (binary_expression "uVar2 != param_4" identifier != identifier) || (binary_expression "piVar7[4] != param_3" (subscript_expression "piVar7[4]" identifier [ number_literal ]) != identifier)) || (parenthesized_expression "(local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" ( (binary_expression "local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (binary_expression "local_20 <= (uint)piVar7[7]" identifier <= (cast_expression "(uint)piVar7[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[7]" identifier [ number_literal ]))) && (binary_expression "(uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (call_expression "(uint)((uint)piVar7[6] < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)piVar7[6] < local_24)" ( (binary_expression "(uint)piVar7[6] < local_24" (cast_expression "(uint)piVar7[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[6]" identifier [ number_literal ])) < identifier) ))) <= (binary_expression "piVar7[7] - local_20" (subscript_expression "piVar7[7]" identifier [ number_literal ]) - identifier))) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar1 = piVar7 + 3;" (assignment_expression "piVar1 = piVar7 + 3" identifier = (binary_expression "piVar7 + 3" identifier + number_literal)) ;) (expression_statement "piVar5 = (int *)*piVar1;" (assignment_expression "piVar5 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) (if_statement "if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;" if (parenthesized_expression "((int *)*piVar1 == (int *)0x0)" ( (binary_expression "(int *)*piVar1 == (int *)0x0" (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001451ad;" goto statement_identifier ;)) })) (expression_statement "piVar5 = (int *)piVar7[2];" (assignment_expression "piVar5 = (int *)piVar7[2]" identifier = (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = piVar7;" (assignment_expression "piVar6 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "((int *)piVar7[2] != (int *)0x0)" ( (binary_expression "(int *)piVar7[2] != (int *)0x0" (cast_expression "(int *)piVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" statement_identifier : (if_statement "if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" if (parenthesized_expression "(param_1 + 0x3e != piVar7)" ( (binary_expression "param_1 + 0x3e != piVar7" (binary_expression "param_1 + 0x3e" identifier + number_literal) != identifier) )) (compound_statement "{\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" { (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" identifier = (subscript_expression "piVar7[5]" identifier [ number_literal ])) ;) (if_statement "if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;" if (parenthesized_expression "((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))))" ( (binary_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" (parenthesized_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2)" ( (binary_expression "uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (binary_expression "uVar2 <= param_4" identifier <= identifier) && (binary_expression "(uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (call_expression "(uint)(param_3 < (uint)piVar7[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 < (uint)piVar7[4])" ( (binary_expression "param_3 < (uint)piVar7[4]" identifier < (cast_expression "(uint)piVar7[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[4]" identifier [ number_literal ]))) ))) <= (binary_expression "param_4 - uVar2" identifier - identifier))) )) && (parenthesized_expression "((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" ( (parenthesized_expression "(param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))" ( (binary_expression "param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" (binary_expression "param_4 != uVar2 || param_3 != piVar7[4]" (binary_expression "param_4 != uVar2" identifier != identifier) || (binary_expression "param_3 != piVar7[4]" identifier != (subscript_expression "piVar7[4]" identifier [ number_literal ]))) || (parenthesized_expression "((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" ( (binary_expression "(uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (binary_expression "(uint)piVar7[7] <= local_20" (cast_expression "(uint)piVar7[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[7]" identifier [ number_literal ])) <= identifier) && (binary_expression "(uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (call_expression "(uint)(local_24 < (uint)piVar7[6])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < (uint)piVar7[6])" ( (binary_expression "local_24 < (uint)piVar7[6]" identifier < (cast_expression "(uint)piVar7[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar7[6]" identifier [ number_literal ]))) ))) <= (binary_expression "local_20 - piVar7[7]" identifier - (subscript_expression "piVar7[7]" identifier [ number_literal ])))) ))) )) ))) )) (goto_statement "goto LAB_001451eb;" goto statement_identifier ;)) }))) })) (expression_statement "local_30 = &local_2c;" (assignment_expression "local_30 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "FUN_00144830(&local_30);" (call_expression "FUN_00144830(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "piVar7 = local_40;" (assignment_expression "piVar7 = local_40" identifier = identifier) ;) (labeled_statement "LAB_001451eb:\n  uVar2 = piVar7[9];" statement_identifier : (expression_statement "uVar2 = piVar7[9];" (assignment_expression "uVar2 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;)) (expression_statement "iVar3 = piVar7[10];" (assignment_expression "iVar3 = piVar7[10]" identifier = (subscript_expression "piVar7[10]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = param_1[0x3a];" (assignment_expression "iVar4 = param_1[0x3a]" identifier = (subscript_expression "param_1[0x3a]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = piVar7[8];" (assignment_expression "*param_2 = piVar7[8]" (pointer_expression "*param_2" * identifier) = (subscript_expression "piVar7[8]" identifier [ number_literal ])) ;) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar3 + iVar4;" return (binary_expression "iVar3 + iVar4" identifier + identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) ))) <= (binary_expression IDENT - IDENT))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT != IDENT) || (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT)) || (parenthesized_expression ( (binary_expression (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) ))) <= (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT))) ))) )) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) <= (binary_expression IDENT - IDENT))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != (subscript_expression IDENT [ LIT ]))) || (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) <= (binary_expression IDENT - (subscript_expression IDENT [ LIT ])))) ))) )) ))) )) (goto_statement goto statement_identifier ;)) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })))
(function_definition "int FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" (primitive_type "int") (function_declarator "FUN_00145110(int *param_1,uint *param_2,uint param_3,uint param_4)" (identifier "FUN_00145110") (parameter_list "(int *param_1,uint *param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *local_40;\n  uint *local_30;\n  uint local_2c;\n  uint local_28;\n  uint local_24;\n  uint local_20;\n  \n  (**(code **)(*param_1 + 0x38))(param_1);\n  local_2c = param_3;\n  local_24 = *param_2;\n  local_20 = param_2[1];\n  local_28 = param_4;\n  piVar5 = (int *)param_1[0x3f];\n  piVar6 = param_1 + 0x3e;\n  if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }\n  local_30 = &local_2c;\n  FUN_00144830(&local_30);\n  piVar7 = local_40;\nLAB_001451eb:\n  uVar2 = piVar7[9];\n  iVar3 = piVar7[10];\n  iVar4 = param_1[0x3a];\n  *param_2 = piVar7[8];\n  param_2[1] = uVar2;\n  return iVar3 + iVar4;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *local_40;" (primitive_type "int") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "uint *local_30;" (type_identifier "uint") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (expression_statement "(**(code **)(*param_1 + 0x38))(param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x38)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x38)" (* "*") (cast_expression "(code **)(*param_1 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x38)" (( "(") (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "local_2c = param_3;" (assignment_expression "local_2c = param_3" (identifier "local_2c") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" (identifier "local_24") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_20 = param_2[1];" (assignment_expression "local_20 = param_2[1]" (identifier "local_20") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_28 = param_4;" (assignment_expression "local_28 = param_4" (identifier "local_28") (= "=") (identifier "param_4")) (; ";")) (expression_statement "piVar5 = (int *)param_1[0x3f];" (assignment_expression "piVar5 = (int *)param_1[0x3f]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[0x3f]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x3f]" (identifier "param_1") ([ "[") (number_literal "0x3f") (] "]")))) (; ";")) (expression_statement "piVar6 = param_1 + 0x3e;" (assignment_expression "piVar6 = param_1 + 0x3e" (identifier "piVar6") (= "=") (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e"))) (; ";")) (if_statement "if ((int *)param_1[0x3f] != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" (if "if") (parenthesized_expression "((int *)param_1[0x3f] != (int *)0x0)" (( "(") (binary_expression "(int *)param_1[0x3f] != (int *)0x0" (cast_expression "(int *)param_1[0x3f]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x3f]" (identifier "param_1") ([ "[") (number_literal "0x3f") (] "]"))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);\nLAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    } while ((int *)piVar7[2] != (int *)0x0);" (do "do") (compound_statement "{\n      while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }\n      piVar5 = (int *)piVar7[2];\n      piVar6 = piVar7;\n    }" ({ "{") (while_statement "while( true ) {\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        piVar7 = piVar5;\n        uVar2 = piVar7[5];\n        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;\n        piVar1 = piVar7 + 3;\n        piVar5 = (int *)*piVar1;\n        piVar7 = piVar6;\n        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;\n      }" ({ "{") (expression_statement "piVar7 = piVar5;" (assignment_expression "piVar7 = piVar5" (identifier "piVar7") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" (identifier "uVar2") (= "=") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;" (if "if") (parenthesized_expression "((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))))" (( "(") (binary_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&\n           ((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" (parenthesized_expression "(param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4)" (( "(") (binary_expression "param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (binary_expression "param_4 <= uVar2" (identifier "param_4") (<= "<=") (identifier "uVar2")) (&& "&&") (binary_expression "(uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4" (call_expression "(uint)((uint)piVar7[4] < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)piVar7[4] < param_3)" (( "(") (binary_expression "(uint)piVar7[4] < param_3" (cast_expression "(uint)piVar7[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (< "<") (identifier "param_3")) () ")"))) (<= "<=") (binary_expression "uVar2 - param_4" (identifier "uVar2") (- "-") (identifier "param_4")))) () ")")) (&& "&&") (parenthesized_expression "((uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))" (( "(") (parenthesized_expression "(uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20))" (( "(") (binary_expression "uVar2 != param_4 || piVar7[4] != param_3 ||\n            (local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" (binary_expression "uVar2 != param_4 || piVar7[4] != param_3" (binary_expression "uVar2 != param_4" (identifier "uVar2") (!= "!=") (identifier "param_4")) (|| "||") (binary_expression "piVar7[4] != param_3" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (!= "!=") (identifier "param_3"))) (|| "||") (parenthesized_expression "(local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)" (( "(") (binary_expression "local_20 <= (uint)piVar7[7] &&\n             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (binary_expression "local_20 <= (uint)piVar7[7]" (identifier "local_20") (<= "<=") (cast_expression "(uint)piVar7[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]")))) (&& "&&") (binary_expression "(uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20" (call_expression "(uint)((uint)piVar7[6] < local_24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)piVar7[6] < local_24)" (( "(") (binary_expression "(uint)piVar7[6] < local_24" (cast_expression "(uint)piVar7[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]"))) (< "<") (identifier "local_24")) () ")"))) (<= "<=") (binary_expression "piVar7[7] - local_20" (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]")) (- "-") (identifier "local_20")))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar1 = piVar7 + 3;" (assignment_expression "piVar1 = piVar7 + 3" (identifier "piVar1") (= "=") (binary_expression "piVar7 + 3" (identifier "piVar7") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "piVar5 = (int *)*piVar1;" (assignment_expression "piVar5 = (int *)*piVar1" (identifier "piVar5") (= "=") (cast_expression "(int *)*piVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")))) (; ";")) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" (identifier "piVar7") (= "=") (identifier "piVar6")) (; ";")) (if_statement "if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;" (if "if") (parenthesized_expression "((int *)*piVar1 == (int *)0x0)" (( "(") (binary_expression "(int *)*piVar1 == (int *)0x0" (cast_expression "(int *)*piVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001451ad;" (goto "goto") (statement_identifier "LAB_001451ad") (; ";"))) (} "}"))) (expression_statement "piVar5 = (int *)piVar7[2];" (assignment_expression "piVar5 = (int *)piVar7[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar7[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar6 = piVar7;" (assignment_expression "piVar6 = piVar7" (identifier "piVar6") (= "=") (identifier "piVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)piVar7[2] != (int *)0x0)" (( "(") (binary_expression "(int *)piVar7[2] != (int *)0x0" (cast_expression "(int *)piVar7[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_001451ad:\n    if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" (statement_identifier "LAB_001451ad") (: ":") (if_statement "if (param_1 + 0x3e != piVar7) {\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" (if "if") (parenthesized_expression "(param_1 + 0x3e != piVar7)" (( "(") (binary_expression "param_1 + 0x3e != piVar7" (binary_expression "param_1 + 0x3e" (identifier "param_1") (+ "+") (number_literal "0x3e")) (!= "!=") (identifier "piVar7")) () ")")) (compound_statement "{\n      uVar2 = piVar7[5];\n      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;\n    }" ({ "{") (expression_statement "uVar2 = piVar7[5];" (assignment_expression "uVar2 = piVar7[5]" (identifier "uVar2") (= "=") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))) goto LAB_001451eb;" (if "if") (parenthesized_expression "((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))))" (( "(") (binary_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&\n         ((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" (parenthesized_expression "(uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2)" (( "(") (binary_expression "uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (binary_expression "uVar2 <= param_4" (identifier "uVar2") (<= "<=") (identifier "param_4")) (&& "&&") (binary_expression "(uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2" (call_expression "(uint)(param_3 < (uint)piVar7[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 < (uint)piVar7[4])" (( "(") (binary_expression "param_3 < (uint)piVar7[4]" (identifier "param_3") (< "<") (cast_expression "(uint)piVar7[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")))) () ")"))) (<= "<=") (binary_expression "param_4 - uVar2" (identifier "param_4") (- "-") (identifier "uVar2")))) () ")")) (&& "&&") (parenthesized_expression "((param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )))" (( "(") (parenthesized_expression "(param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          ))" (( "(") (binary_expression "param_4 != uVar2 || param_3 != piVar7[4] ||\n          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" (binary_expression "param_4 != uVar2 || param_3 != piVar7[4]" (binary_expression "param_4 != uVar2" (identifier "param_4") (!= "!=") (identifier "uVar2")) (|| "||") (binary_expression "param_3 != piVar7[4]" (identifier "param_3") (!= "!=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")))) (|| "||") (parenthesized_expression "((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]\n          )" (( "(") (binary_expression "(uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (binary_expression "(uint)piVar7[7] <= local_20" (cast_expression "(uint)piVar7[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]"))) (<= "<=") (identifier "local_20")) (&& "&&") (binary_expression "(uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]" (call_expression "(uint)(local_24 < (uint)piVar7[6])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < (uint)piVar7[6])" (( "(") (binary_expression "local_24 < (uint)piVar7[6]" (identifier "local_24") (< "<") (cast_expression "(uint)piVar7[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]")))) () ")"))) (<= "<=") (binary_expression "local_20 - piVar7[7]" (identifier "local_20") (- "-") (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]"))))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_001451eb;" (goto "goto") (statement_identifier "LAB_001451eb") (; ";"))) (} "}")))) (} "}"))) (expression_statement "local_30 = &local_2c;" (assignment_expression "local_30 = &local_2c" (identifier "local_30") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "FUN_00144830(&local_30);" (call_expression "FUN_00144830(&local_30)" (identifier "FUN_00144830") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "piVar7 = local_40;" (assignment_expression "piVar7 = local_40" (identifier "piVar7") (= "=") (identifier "local_40")) (; ";")) (labeled_statement "LAB_001451eb:\n  uVar2 = piVar7[9];" (statement_identifier "LAB_001451eb") (: ":") (expression_statement "uVar2 = piVar7[9];" (assignment_expression "uVar2 = piVar7[9]" (identifier "uVar2") (= "=") (subscript_expression "piVar7[9]" (identifier "piVar7") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (expression_statement "iVar3 = piVar7[10];" (assignment_expression "iVar3 = piVar7[10]" (identifier "iVar3") (= "=") (subscript_expression "piVar7[10]" (identifier "piVar7") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "iVar4 = param_1[0x3a];" (assignment_expression "iVar4 = param_1[0x3a]" (identifier "iVar4") (= "=") (subscript_expression "param_1[0x3a]" (identifier "param_1") ([ "[") (number_literal "0x3a") (] "]"))) (; ";")) (expression_statement "*param_2 = piVar7[8];" (assignment_expression "*param_2 = piVar7[8]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (subscript_expression "piVar7[8]" (identifier "piVar7") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (return_statement "return iVar3 + iVar4;" (return "return") (binary_expression "iVar3 + iVar4" (identifier "iVar3") (+ "+") (identifier "iVar4")) (; ";")) (} "}")))

/* DWARF original prototype: uchar * get_new_abbrev(Output_reduced_debug_abbrev_section * this,
   uint64_t * abbrev_number, uint64_t abbrev_offset) */

uchar * __thiscall
gold::Output_reduced_debug_abbrev_section::get_new_abbrev
          (Output_reduced_debug_abbrev_section *this,uint64_t *abbrev_number,uint64_t var_6)

{
  type_1 *pp_Var1;
  type_2 *var_10;
  type_1 var_5;
  type_3 uVar4;
  int var_17;
  type_4 var_16;
  uint64_t var_7;
  type_1 p_Var8;
  type_2 *var_11;
  type_5 in_stack_ffffffa8;
  var_1<var_2::var_12<var_3,var_4>&&> *in_stack_ffffffac;
  var_1<> *in_stack_ffffffb0;
  type_2 *local_40;
  uint64_t *local_30;
  uint64_t local_2c;
  type_1 var_9;
  type_1 var_8;
  
  (*(this->super_Output_section).super_Output_data._vptr_Output_data[0xe])(this);
  var_9 = *(type_1 *)abbrev_number;
  var_8 = *(type_1 *)((int)abbrev_number + 4);
  var_10 = &(this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;
  var_5 = (this->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
  p_Var8 = &var_10->_M_header;
  if (var_5 != (type_1)0x0) {
    do {
      while ((var_11 = (type_2 *)var_5, var_5 = (type_1)((int)var_11 + 0x10),
             var_7._0_4_ = var_5->_M_color, var_7._4_4_ = var_5->_M_parent,
             ((type_1)((int)var_11 + 0x10))->_M_parent < var_6._4_4_ ||
             (uint)((int)((type_1)((int)var_11 + 0x10))->_M_parent - (int)var_6._4_4_) <
             (uint)(var_5->_M_color < (type_6)var_6) ||
             ((var_6 == var_7 &&
              ((type_1)((size_t *)((int)var_11 + 0x10))[3] < var_8 ||
               (uint)((int)((size_t *)((int)var_11 + 0x10))[3] - (int)var_8) <
               (uint)((type_1)((size_t *)((int)var_11 + 0x10))[2] < var_9)))))) {
        pp_Var1 = &(var_11->_M_header)._M_right;
        var_5 = *pp_Var1;
        var_11 = (type_2 *)p_Var8;
        if (*pp_Var1 == (type_1)0x0) goto LAB_001451ad;
      }
      var_5 = (var_11->_M_header)._M_left;
      p_Var8 = &var_11->_M_header;
    } while ((var_11->_M_header)._M_left != (type_1)0x0);
LAB_001451ad:
    if (((var_10 != var_11) &&
        (*(type_1 *)(var_11 + 1) <= var_6._4_4_ &&
         (uint)((type_6)var_6 < var_11->_M_node_count) <=
         (uint)((int)var_6._4_4_ - (int)*(type_1 *)(var_11 + 1)))) &&
       ((var_6 != *(uint64_t *)&var_11->_M_node_count ||
        (*(type_1 *)((int)(var_11 + 1) + 8) <= var_8 &&
         (uint)(var_9 < *(type_1 *)((int)(var_11 + 1) + 4)) <=
         (uint)((int)var_8 - *(int *)((int)(var_11 + 1) + 8)))))) goto LAB_001451eb;
  }
  local_30 = &local_2c;
  local_2c = var_6;
  var_2::
  _Rb_tree<var_2::var_12<var_3,var_4>,_std::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>,_std::_Select1st<var_2::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>var_13>,_std::less<var_2::var_12<var_3,var_4>var_13>,_std::var_14<var_2::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>var_13>var_13>
  ::
  _M_emplace_hint_unique<const_std::type_7&,_std::var_1<var_2::var_12<var_3,var_4>&&>,_std::var_1<>var_13>
            ((_Rb_tree<var_2::var_12<var_3,var_4>,_std::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>,_std::_Select1st<var_2::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>var_13>,_std::less<var_2::var_12<var_3,var_4>var_13>,_std::var_14<var_2::var_12<const_std::var_12<var_3,var_4>,_std::var_12<var_3,var_4>var_13>var_13>var_13>
              *)&local_30,in_stack_ffffffa8,in_stack_ffffffac,in_stack_ffffffb0,
             (type_7 *)var_9);
  var_11 = local_40;
LAB_001451eb:
  uVar4 = *(type_3 *)((int)(var_11 + 1) + 0x10);
  var_17 = *(int *)(var_11 + 2);
  var_16 = (this->data_).super__Vector_base<var_15,_std::var_14<var_15>var_13>._M_impl.
           _M_start;
  *(type_3 *)abbrev_number = *(type_3 *)((int)(var_11 + 1) + 0xc);
  *(type_3 *)((int)abbrev_number + 4) = uVar4;
  return var_16 + var_17;
}


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

int MASKED(int *param_1,uint *param_2,uint param_3,uint param_4)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *local_40;
  uint *local_30;
  uint local_2c;
  uint local_28;
  uint local_24;
  uint local_20;
  
  (**(code **)(*param_1 + 0x38))(param_1);
  local_2c = param_3;
  local_24 = *param_2;
  local_20 = param_2[1];
  local_28 = param_4;
  piVar5 = (int *)param_1[0x3f];
  piVar6 = param_1 + 0x3e;
  if ((int *)param_1[0x3f] != (int *)0x0) {
    do {
      while( true ) {
        piVar7 = piVar5;
        uVar2 = piVar7[5];
        if ((param_4 <= uVar2 && (uint)((uint)piVar7[4] < param_3) <= uVar2 - param_4) &&
           ((uVar2 != param_4 || piVar7[4] != param_3 ||
            (local_20 <= (uint)piVar7[7] &&
             (uint)((uint)piVar7[6] < local_24) <= piVar7[7] - local_20)))) break;
        piVar1 = piVar7 + 3;
        piVar5 = (int *)*piVar1;
        piVar7 = piVar6;
        if ((int *)*piVar1 == (int *)0x0) goto LAB_001451ad;
      }
      piVar5 = (int *)piVar7[2];
      piVar6 = piVar7;
    } while ((int *)piVar7[2] != (int *)0x0);
LAB_001451ad:
    if (param_1 + 0x3e != piVar7) {
      uVar2 = piVar7[5];
      if ((uVar2 <= param_4 && (uint)(param_3 < (uint)piVar7[4]) <= param_4 - uVar2) &&
         ((param_4 != uVar2 || param_3 != piVar7[4] ||
          ((uint)piVar7[7] <= local_20 && (uint)(local_24 < (uint)piVar7[6]) <= local_20 - piVar7[7]
          )))) goto LAB_001451eb;
    }
  }
  local_30 = &local_2c;
  FUN_00144830(&local_30);
  piVar7 = local_40;
LAB_001451eb:
  uVar2 = piVar7[9];
  iVar3 = piVar7[10];
  iVar4 = param_1[0x3a];
  *param_2 = piVar7[8];
  param_2[1] = uVar2;
  return iVar3 + iVar4;
}

