
/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
   * this, key_type.conflict1 * __k) */

pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __thiscall
std::
_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
::_M_get_insert_unique_pos
          (_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
           *this,key_type_conflict1 *__k)

{
  bool bVar1;
  _Rb_tree_color _Var2;
  _Rb_tree_node_base *in_v1;
  _Rb_tree_node_base *p_Var3;
  int *in_a2;
  uint uVar4;
  uint uVar5;
  _Rb_tree_color _Var6;
  _Rb_tree_color _Var7;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar8;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar9;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar10;
  
  _Var6 = *(_Rb_tree_color *)(__k + 1);
  if (_Var6 == _S_red) {
    _Var7 = (int)__k + 4;
LAB_002efb1c:
    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {
      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;
      *(undefined4 *)&this->_M_impl = 0;
      pVar10.first = (_Rb_tree_node_base *)this;
      pVar10.second = in_v1;
      return pVar10;
    }
    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);
    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);
    uVar4 = *(uint *)(_Var6 + 0x14);
    p_Var3 = (_Rb_tree_node_base *)*in_a2;
    uVar5 = in_a2[1];
LAB_002efabc:
    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {
      *(_Rb_tree_color *)&this->_M_impl = _Var6;
      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;
      pVar9.first = (_Rb_tree_node_base *)this;
      pVar9.second = in_v1;
      return pVar9;
    }
    *(undefined4 *)&this->_M_impl = 0;
    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;
    pVar8.first = (_Rb_tree_node_base *)this;
    pVar8.second = in_v1;
    return pVar8;
  }
  p_Var3 = (_Rb_tree_node_base *)*in_a2;
  in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);
  uVar5 = in_a2[1];
  uVar4 = *(uint *)(_Var6 + 0x14);
  if ((int)p_Var3 < (int)in_v1) goto LAB_002efaa4;
  do {
    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;
    bVar1 = false;
    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);
    _Var7 = _Var6;
    while( true ) {
      _Var6 = _Var2;
      if (_Var6 == _S_red) {
        _Var6 = _Var7;
        if (!bVar1) goto LAB_002efabc;
        goto LAB_002efb1c;
      }
      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);
      uVar4 = *(uint *)(_Var6 + 0x14);
      if ((int)in_v1 <= (int)p_Var3) break;
LAB_002efaa4:
      bVar1 = true;
      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);
      _Var7 = _Var6;
    }
  } while( true );
}



/* std::_Rb_tree<long long, std::pair<long long const, std::pair<unsigned int, long long> >,
   std::_Select1st<std::pair<long long const, std::pair<unsigned int, long long> > >, std::less<long
   long>, std::allocator<std::pair<long long const, std::pair<unsigned int, long long> > >
   >::_M_get_insert_unique_pos(long long const&) */

longlong *
std::
_Rb_tree<long_long,std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>
::_M_get_insert_unique_pos(longlong *param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_a1;
  int *in_a2;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  
  iVar7 = *(int *)(in_a1 + 8);
  if (iVar7 == 0) {
    iVar8 = in_a1 + 4;
LAB_002efb1c:
    if (*(int *)(in_a1 + 0xc) == iVar8) {
      *(int *)((int)param_1 + 4) = iVar8;
      *(undefined4 *)param_1 = 0;
      return param_1;
    }
    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);
    iVar3 = *(int *)(iVar7 + 0x10);
    uVar5 = *(uint *)(iVar7 + 0x14);
    iVar4 = *in_a2;
    uVar6 = in_a2[1];
LAB_002efabc:
    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {
      *(int *)param_1 = iVar7;
      *(undefined4 *)((int)param_1 + 4) = 0;
      return param_1;
    }
    *(undefined4 *)param_1 = 0;
    *(int *)((int)param_1 + 4) = iVar8;
    return param_1;
  }
  iVar4 = *in_a2;
  iVar3 = *(int *)(iVar7 + 0x10);
  uVar6 = in_a2[1];
  uVar5 = *(uint *)(iVar7 + 0x14);
  if (iVar4 < iVar3) goto LAB_002efaa4;
  do {
    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;
    bVar1 = false;
    iVar2 = *(int *)(iVar7 + 0xc);
    iVar8 = iVar7;
    while( true ) {
      iVar7 = iVar2;
      if (iVar7 == 0) {
        iVar7 = iVar8;
        if (!bVar1) goto LAB_002efabc;
        goto LAB_002efb1c;
      }
      iVar3 = *(int *)(iVar7 + 0x10);
      uVar5 = *(uint *)(iVar7 + 0x14);
      if (iVar3 <= iVar4) break;
LAB_002efaa4:
      bVar1 = true;
      iVar2 = *(int *)(iVar7 + 8);
      iVar8 = iVar7;
    }
  } while( true );
}


lui gp,0x1e
addiu gp,gp,-0x67e8
addu gp,gp,t9
addiu sp,sp,-0x28
sw s0,0x1c(sp)
sw gp,0x10(sp)
sw s1,0x20(sp)
sw ra,0x24(sp)
lw s0,0x8(a1)
beq s0,zero,0x002efb18
_or s1,a0,zero
lw a0,0x0(a2)
li a3,0x1
lw v1,0x10(s0)
lw t1,0x4(a2)
slt v0,a0,v1
bne v0,zero,0x002efaa4
_lw t0,0x14(s0)
bne v1,a0,0x002efa80
_sltu v0,t1,t0
bne v0,zero,0x002efaa4
_nop
lw v0,0xc(s0)
beq v0,zero,0x002efab0
_or a3,zero,zero
or s0,v0,zero
li a3,0x1
lw v1,0x10(s0)
slt v0,a0,v1
beq v0,zero,0x002efa70
_lw t0,0x14(s0)
lw v0,0x8(s0)
bne v0,zero,0x002efa8c
_nop
bne a3,zero,0x002efb1c
_nop
or a1,s0,zero
slt v0,v1,a0
beq v0,zero,0x002efae4
_lw ra,0x24(sp)
or v0,s1,zero
lw s0,0x1c(sp)
sw zero,0x0(s1)
sw a1,0x4(s1)
lw s1,0x20(sp)
jr ra
_addiu sp,sp,0x28
bne a0,v1,0x002efafc
_nop
sltu t0,t0,t1
bne t0,zero,0x002efacc
_or v0,s1,zero
lw ra,0x24(sp)
or v0,s1,zero
sw s0,0x0(s1)
sw zero,0x4(s1)
lw s0,0x1c(sp)
lw s1,0x20(sp)
jr ra
_addiu sp,sp,0x28
addiu s0,a1,0x4
lw v0,0xc(a1)
beq v0,s0,0x002efb54
_lw t9,-0x77e4(gp)
or a0,s0,zero
jalr t9
_sw a2,0x30(sp)
or a1,s0,zero
lw a2,0x30(sp)
or s0,v0,zero
lw v1,0x10(v0)
lw t0,0x14(v0)
lw a0,0x0(a2)
b 0x002efabc
_lw t1,0x4(a2)
lw ra,0x24(sp)
or v0,s1,zero
sw s0,0x4(s1)
sw zero,0x0(s1)
lw s0,0x1c(sp)
lw s1,0x20(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "/* std::_Rb_tree<long long, std::pair<long long const, std::pair<unsigned int, long long> >,\n   std::_Select1st<std::pair<long long const, std::pair<unsigned int, long long> > >, std::less<long\n   long>, std::allocator<std::pair<long long const, std::pair<unsigned int, long long> > >\n   >::_M_get_insert_unique_pos(long long const&) */\n\nlonglong *\nstd::\n_Rb_tree<long_long,std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_a1;\n  int *in_a2;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  \n  iVar7 = *(int *)(in_a1 + 8);\n  if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }\n  iVar4 = *in_a2;\n  iVar3 = *(int *)(iVar7 + 0x10);\n  uVar6 = in_a2[1];\n  uVar5 = *(uint *)(iVar7 + 0x14);\n  if (iVar4 < iVar3) goto LAB_002efaa4;\n  do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );\n}\n\n" comment (ERROR "longlong *\nstd::\n_Rb_tree<long_long," (binary_expression "longlong *\nstd::\n_Rb_tree<long_long" (binary_expression "longlong *\nstd" identifier * identifier) (ERROR "::\n_Rb_tree" : : identifier) < identifier) ,) (labeled_statement "std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" statement_identifier (ERROR "::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std:" : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,long_long>>,std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>,std" identifier >> (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,long_long>>>,std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>>,std" identifier >> (ERROR ">," > ,) identifier)) : : (binary_expression "less<long_long>,std" (binary_expression "less<long_long" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) :) : (expression_statement "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (comma_expression "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" identifier >> (ERROR ">>\n::" >> : :) (call_expression "_M_get_insert_unique_pos(longlong *param_1)" identifier (argument_list "(longlong *param_1)" ( (binary_expression "longlong *param_1" identifier * identifier) ))))) ;)) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_a1;\n  int *in_a2;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  \n  iVar7 = *(int *)(in_a1 + 8);\n  if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }\n  iVar4 = *in_a2;\n  iVar3 = *(int *)(iVar7 + 0x10);\n  uVar6 = in_a2[1];\n  uVar5 = *(uint *)(iVar7 + 0x14);\n  if (iVar4 < iVar3) goto LAB_002efaa4;\n  do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_a1;" primitive_type identifier ;) (declaration "int *in_a2;" primitive_type (pointer_declarator "*in_a2" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (expression_statement "iVar7 = *(int *)(in_a1 + 8);" (assignment_expression "iVar7 = *(int *)(in_a1 + 8)" identifier = (pointer_expression "*(int *)(in_a1 + 8)" * (cast_expression "(int *)(in_a1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 8)" ( (binary_expression "in_a1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" { (expression_statement "iVar8 = in_a1 + 4;" (assignment_expression "iVar8 = in_a1 + 4" identifier = (binary_expression "in_a1 + 4" identifier + number_literal)) ;) (labeled_statement "LAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" statement_identifier : (if_statement "if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" if (parenthesized_expression "(*(int *)(in_a1 + 0xc) == iVar8)" ( (binary_expression "*(int *)(in_a1 + 0xc) == iVar8" (pointer_expression "*(int *)(in_a1 + 0xc)" * (cast_expression "(int *)(in_a1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 0xc)" ( (binary_expression "in_a1 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" { (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return param_1;" return identifier ;) }))) (expression_statement "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);" (assignment_expression "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" identifier = (call_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" (parenthesized_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)" ( (pointer_expression "*(code *)PTR__Rb_tree_decrement_004c1a5c" * (cast_expression "(code *)PTR__Rb_tree_decrement_004c1a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" identifier = (pointer_expression "*in_a2" * identifier)) ;) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" statement_identifier : (if_statement "if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" if (parenthesized_expression "((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5))))" ( (binary_expression "(iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))" (parenthesized_expression "(iVar4 <= iVar3)" ( (binary_expression "iVar4 <= iVar3" identifier <= identifier) )) && (parenthesized_expression "((iVar4 != iVar3 || (uVar6 <= uVar5)))" ( (parenthesized_expression "(iVar4 != iVar3 || (uVar6 <= uVar5))" ( (binary_expression "iVar4 != iVar3 || (uVar6 <= uVar5)" (binary_expression "iVar4 != iVar3" identifier != identifier) || (parenthesized_expression "(uVar6 <= uVar5)" ( (binary_expression "uVar6 <= uVar5" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" { (expression_statement "*(int *)param_1 = iVar7;" (assignment_expression "*(int *)param_1 = iVar7" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)((int)param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + 4) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + 4)" * (cast_expression "(undefined4 *)((int)param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1;" return identifier ;) }))) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" identifier = (pointer_expression "*in_a2" * identifier)) ;) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < iVar3) goto LAB_002efaa4;" if (parenthesized_expression "(iVar4 < iVar3)" ( (binary_expression "iVar4 < iVar3" identifier < identifier) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (do_statement "do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  }" { (if_statement "if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;" if (parenthesized_expression "((iVar3 == iVar4) && (uVar6 < uVar5))" ( (binary_expression "(iVar3 == iVar4) && (uVar6 < uVar5)" (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) && (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) ))) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "iVar2 = *(int *)(iVar7 + 0xc);" (assignment_expression "iVar2 = *(int *)(iVar7 + 0xc)" identifier = (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (while_statement "while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" { (expression_statement "iVar7 = iVar2;" (assignment_expression "iVar7 = iVar2" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" { (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (if_statement "if (!bVar1) goto LAB_002efabc;" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (goto_statement "goto LAB_002efabc;" goto statement_identifier ;)) (goto_statement "goto LAB_002efb1c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 <= iVar4) break;" if (parenthesized_expression "(iVar3 <= iVar4)" ( (binary_expression "iVar3 <= iVar4" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002efaa4:\n      bVar1 = true;" statement_identifier : (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;)) (expression_statement "iVar2 = *(int *)(iVar7 + 8);" (assignment_expression "iVar2 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))
(translation_unit "/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>\n   _M_get_insert_unique_pos(_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n   * this, key_type.conflict1 * __k) */\n\npair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __thiscall\nstd::\n_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n           *this,key_type_conflict1 *__k)\n\n{\n  bool bVar1;\n  _Rb_tree_color _Var2;\n  _Rb_tree_node_base *in_v1;\n  _Rb_tree_node_base *p_Var3;\n  int *in_a2;\n  uint uVar4;\n  uint uVar5;\n  _Rb_tree_color _Var6;\n  _Rb_tree_color _Var7;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar8;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar9;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar10;\n  \n  _Var6 = *(_Rb_tree_color *)(__k + 1);\n  if (_Var6 == _S_red) {\n    _Var7 = (int)__k + 4;\nLAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }\n    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);\n    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n    uVar4 = *(uint *)(_Var6 + 0x14);\n    p_Var3 = (_Rb_tree_node_base *)*in_a2;\n    uVar5 = in_a2[1];\nLAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }\n    *(undefined4 *)&this->_M_impl = 0;\n    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n    pVar8.first = (_Rb_tree_node_base *)this;\n    pVar8.second = in_v1;\n    return pVar8;\n  }\n  p_Var3 = (_Rb_tree_node_base *)*in_a2;\n  in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n  uVar5 = in_a2[1];\n  uVar4 = *(uint *)(_Var6 + 0x14);\n  if ((int)p_Var3 < (int)in_v1) goto LAB_002efaa4;\n  do {\n    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;\n    bVar1 = false;\n    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);\n    _Var7 = _Var6;\n    while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }\n  } while( true );\n}\n\n" comment (ERROR "pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : : identifier * >) (function_definition "__thiscall\nstd::\n_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n           *this,key_type_conflict1 *__k)\n\n{\n  bool bVar1;\n  _Rb_tree_color _Var2;\n  _Rb_tree_node_base *in_v1;\n  _Rb_tree_node_base *p_Var3;\n  int *in_a2;\n  uint uVar4;\n  uint uVar5;\n  _Rb_tree_color _Var6;\n  _Rb_tree_color _Var7;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar8;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar9;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar10;\n  \n  _Var6 = *(_Rb_tree_color *)(__k + 1);\n  if (_Var6 == _S_red) {\n    _Var7 = (int)__k + 4;\nLAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }\n    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);\n    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n    uVar4 = *(uint *)(_Var6 + 0x14);\n    p_Var3 = (_Rb_tree_node_base *)*in_a2;\n    uVar5 = in_a2[1];\nLAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }\n    *(undefined4 *)&this->_M_impl = 0;\n    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n    pVar8.first = (_Rb_tree_node_base *)this;\n    pVar8.second = in_v1;\n    return pVar8;\n  }\n  p_Var3 = (_Rb_tree_node_base *)*in_a2;\n  in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n  uVar5 = in_a2[1];\n  uVar4 = *(uint *)(_Var6 + 0x14);\n  if ((int)p_Var3 < (int)in_v1) goto LAB_002efaa4;\n  do {\n    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;\n    bVar1 = false;\n    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);\n    _Var7 = _Var6;\n    while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }\n  } while( true );\n}" (ms_call_modifier "__thiscall" __thiscall) type_identifier (ERROR "::\n_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n::" : : identifier < identifier , identifier : : identifier < identifier , identifier : : identifier < identifier , identifier > identifier > , identifier : : identifier < identifier : : identifier < identifier , identifier : : identifier < identifier , identifier > identifier > identifier > , identifier : : identifier < identifier > , identifier : : identifier < identifier : : identifier < identifier , identifier : : identifier < identifier , identifier > identifier > identifier > identifier > : :) (function_declarator "_M_get_insert_unique_pos\n          (_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n           *this,key_type_conflict1 *__k)" identifier (parameter_list "(_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>\n           *this,key_type_conflict1 *__k)" ( (parameter_declaration "_Rb_tree<long_long_int" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::pair<long_long_int_const" type_identifier (ERROR "::pair<" : : identifier <) identifier) , (parameter_declaration "_std::pair<unsigned_int" type_identifier (ERROR "::pair<" : : identifier <) identifier) , (parameter_declaration "_long_long_int>_" type_identifier (ERROR ">" >) identifier) (ERROR ">" >) , (parameter_declaration "_std::_Select1st<std::pair<long_long_int_const" type_identifier (ERROR "::_Select1st<std::pair<" : : identifier < identifier : : identifier <) identifier) , (parameter_declaration "_std::pair<unsigned_int" type_identifier (ERROR "::pair<" : : identifier <) identifier) , (parameter_declaration "_long_long_int>_>_" type_identifier (ERROR ">_>" > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::less<long_long_int" type_identifier (ERROR "::less<" : : identifier <) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair<long_long_int_const" type_identifier (ERROR "::allocator<std::pair<" : : identifier < identifier : : identifier <) identifier) , (parameter_declaration "_std::pair<unsigned_int" type_identifier (ERROR "::pair<" : : identifier <) identifier) , (parameter_declaration "_long_long_int>_>_>_>\n           *this" type_identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "key_type_conflict1 *__k" type_identifier (pointer_declarator "*__k" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  _Rb_tree_color _Var2;\n  _Rb_tree_node_base *in_v1;\n  _Rb_tree_node_base *p_Var3;\n  int *in_a2;\n  uint uVar4;\n  uint uVar5;\n  _Rb_tree_color _Var6;\n  _Rb_tree_color _Var7;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar8;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar9;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar10;\n  \n  _Var6 = *(_Rb_tree_color *)(__k + 1);\n  if (_Var6 == _S_red) {\n    _Var7 = (int)__k + 4;\nLAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }\n    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);\n    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n    uVar4 = *(uint *)(_Var6 + 0x14);\n    p_Var3 = (_Rb_tree_node_base *)*in_a2;\n    uVar5 = in_a2[1];\nLAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }\n    *(undefined4 *)&this->_M_impl = 0;\n    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n    pVar8.first = (_Rb_tree_node_base *)this;\n    pVar8.second = in_v1;\n    return pVar8;\n  }\n  p_Var3 = (_Rb_tree_node_base *)*in_a2;\n  in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n  uVar5 = in_a2[1];\n  uVar4 = *(uint *)(_Var6 + 0x14);\n  if ((int)p_Var3 < (int)in_v1) goto LAB_002efaa4;\n  do {\n    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;\n    bVar1 = false;\n    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);\n    _Var7 = _Var6;\n    while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "_Rb_tree_color _Var2;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *in_v1;" type_identifier (pointer_declarator "*in_v1" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "int *in_a2;" primitive_type (pointer_declarator "*in_a2" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var6;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var7;" type_identifier identifier ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar8;" (binary_expression "_Rb_tree_node_base*> pVar8" identifier * (ERROR ">" >) identifier) ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar9;" (binary_expression "_Rb_tree_node_base*> pVar9" identifier * (ERROR ">" >) identifier) ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar10;" (binary_expression "_Rb_tree_node_base*> pVar10" identifier * (ERROR ">" >) identifier) ;) (expression_statement "_Var6 = *(_Rb_tree_color *)(__k + 1);" (assignment_expression "_Var6 = *(_Rb_tree_color *)(__k + 1)" identifier = (pointer_expression "*(_Rb_tree_color *)(__k + 1)" * (cast_expression "(_Rb_tree_color *)(__k + 1)" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__k + 1)" ( (binary_expression "__k + 1" identifier + number_literal) ))))) ;) (if_statement "if (_Var6 == _S_red) {\n    _Var7 = (int)__k + 4;\nLAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }\n    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);\n    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n    uVar4 = *(uint *)(_Var6 + 0x14);\n    p_Var3 = (_Rb_tree_node_base *)*in_a2;\n    uVar5 = in_a2[1];\nLAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }\n    *(undefined4 *)&this->_M_impl = 0;\n    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n    pVar8.first = (_Rb_tree_node_base *)this;\n    pVar8.second = in_v1;\n    return pVar8;\n  }" if (parenthesized_expression "(_Var6 == _S_red)" ( (binary_expression "_Var6 == _S_red" identifier == identifier) )) (compound_statement "{\n    _Var7 = (int)__k + 4;\nLAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }\n    _Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);\n    in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n    uVar4 = *(uint *)(_Var6 + 0x14);\n    p_Var3 = (_Rb_tree_node_base *)*in_a2;\n    uVar5 = in_a2[1];\nLAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }\n    *(undefined4 *)&this->_M_impl = 0;\n    (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n    pVar8.first = (_Rb_tree_node_base *)this;\n    pVar8.second = in_v1;\n    return pVar8;\n  }" { (expression_statement "_Var7 = (int)__k + 4;" (assignment_expression "_Var7 = (int)__k + 4" identifier = (binary_expression "(int)__k + 4" (cast_expression "(int)__k" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (labeled_statement "LAB_002efb1c:\n    if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }" statement_identifier : (if_statement "if (*(_Rb_tree_color *)((int)__k + 0xc) == _Var7) {\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }" if (parenthesized_expression "(*(_Rb_tree_color *)((int)__k + 0xc) == _Var7)" ( (binary_expression "*(_Rb_tree_color *)((int)__k + 0xc) == _Var7" (pointer_expression "*(_Rb_tree_color *)((int)__k + 0xc)" * (cast_expression "(_Rb_tree_color *)((int)__k + 0xc)" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__k + 0xc)" ( (binary_expression "(int)__k + 0xc" (cast_expression "(int)__k" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;\n      *(undefined4 *)&this->_M_impl = 0;\n      pVar10.first = (_Rb_tree_node_base *)this;\n      pVar10.second = in_v1;\n      return pVar10;\n    }" { (expression_statement "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;" (assignment_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&this->_M_impl = 0;" (assignment_expression "*(undefined4 *)&this->_M_impl = 0" (pointer_expression "*(undefined4 *)&this->_M_impl" * (cast_expression "(undefined4 *)&this->_M_impl" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->_M_impl" & (field_expression "this->_M_impl" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pVar10.first = (_Rb_tree_node_base *)this;" (assignment_expression "pVar10.first = (_Rb_tree_node_base *)this" (field_expression "pVar10.first" identifier . field_identifier) = (cast_expression "(_Rb_tree_node_base *)this" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pVar10.second = in_v1;" (assignment_expression "pVar10.second = in_v1" (field_expression "pVar10.second" identifier . field_identifier) = identifier) ;) (return_statement "return pVar10;" return identifier ;) }))) (expression_statement "_Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7);" (assignment_expression "_Var6 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7)" identifier = (call_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)(_Var7)" (parenthesized_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)" ( (pointer_expression "*(code *)PTR__Rb_tree_decrement_004c1a5c" * (cast_expression "(code *)PTR__Rb_tree_decrement_004c1a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(_Var7)" ( identifier )))) ;) (expression_statement "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);" (assignment_expression "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10)" identifier = (pointer_expression "*(_Rb_tree_node_base **)(_Var6 + 0x10)" * (cast_expression "(_Rb_tree_node_base **)(_Var6 + 0x10)" ( (type_descriptor "_Rb_tree_node_base **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(_Var6 + 0x10)" ( (binary_expression "_Var6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(_Var6 + 0x14);" (assignment_expression "uVar4 = *(uint *)(_Var6 + 0x14)" identifier = (pointer_expression "*(uint *)(_Var6 + 0x14)" * (cast_expression "(uint *)(_Var6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_Var6 + 0x14)" ( (binary_expression "_Var6 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "p_Var3 = (_Rb_tree_node_base *)*in_a2;" (assignment_expression "p_Var3 = (_Rb_tree_node_base *)*in_a2" identifier = (cast_expression "(_Rb_tree_node_base *)*in_a2" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_a2" * identifier))) ;) (expression_statement "uVar5 = in_a2[1];" (assignment_expression "uVar5 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002efabc:\n    if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }" statement_identifier : (if_statement "if (((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))) {\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }" if (parenthesized_expression "(((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4))))" ( (binary_expression "((int)p_Var3 <= (int)in_v1) && ((p_Var3 != in_v1 || (uVar5 <= uVar4)))" (parenthesized_expression "((int)p_Var3 <= (int)in_v1)" ( (binary_expression "(int)p_Var3 <= (int)in_v1" (cast_expression "(int)p_Var3" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)in_v1" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((p_Var3 != in_v1 || (uVar5 <= uVar4)))" ( (parenthesized_expression "(p_Var3 != in_v1 || (uVar5 <= uVar4))" ( (binary_expression "p_Var3 != in_v1 || (uVar5 <= uVar4)" (binary_expression "p_Var3 != in_v1" identifier != identifier) || (parenthesized_expression "(uVar5 <= uVar4)" ( (binary_expression "uVar5 <= uVar4" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      *(_Rb_tree_color *)&this->_M_impl = _Var6;\n      (this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;\n      pVar9.first = (_Rb_tree_node_base *)this;\n      pVar9.second = in_v1;\n      return pVar9;\n    }" { (expression_statement "*(_Rb_tree_color *)&this->_M_impl = _Var6;" (assignment_expression "*(_Rb_tree_color *)&this->_M_impl = _Var6" (pointer_expression "*(_Rb_tree_color *)&this->_M_impl" * (cast_expression "(_Rb_tree_color *)&this->_M_impl" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->_M_impl" & (field_expression "this->_M_impl" identifier -> field_identifier)))) = identifier) ;) (expression_statement "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red;" (assignment_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _S_red" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pVar9.first = (_Rb_tree_node_base *)this;" (assignment_expression "pVar9.first = (_Rb_tree_node_base *)this" (field_expression "pVar9.first" identifier . field_identifier) = (cast_expression "(_Rb_tree_node_base *)this" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pVar9.second = in_v1;" (assignment_expression "pVar9.second = in_v1" (field_expression "pVar9.second" identifier . field_identifier) = identifier) ;) (return_statement "return pVar9;" return identifier ;) }))) (expression_statement "*(undefined4 *)&this->_M_impl = 0;" (assignment_expression "*(undefined4 *)&this->_M_impl = 0" (pointer_expression "*(undefined4 *)&this->_M_impl" * (cast_expression "(undefined4 *)&this->_M_impl" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->_M_impl" & (field_expression "this->_M_impl" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7;" (assignment_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color = _Var7" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_color" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pVar8.first = (_Rb_tree_node_base *)this;" (assignment_expression "pVar8.first = (_Rb_tree_node_base *)this" (field_expression "pVar8.first" identifier . field_identifier) = (cast_expression "(_Rb_tree_node_base *)this" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pVar8.second = in_v1;" (assignment_expression "pVar8.second = in_v1" (field_expression "pVar8.second" identifier . field_identifier) = identifier) ;) (return_statement "return pVar8;" return identifier ;) })) (expression_statement "p_Var3 = (_Rb_tree_node_base *)*in_a2;" (assignment_expression "p_Var3 = (_Rb_tree_node_base *)*in_a2" identifier = (cast_expression "(_Rb_tree_node_base *)*in_a2" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*in_a2" * identifier))) ;) (expression_statement "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);" (assignment_expression "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10)" identifier = (pointer_expression "*(_Rb_tree_node_base **)(_Var6 + 0x10)" * (cast_expression "(_Rb_tree_node_base **)(_Var6 + 0x10)" ( (type_descriptor "_Rb_tree_node_base **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(_Var6 + 0x10)" ( (binary_expression "_Var6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = in_a2[1];" (assignment_expression "uVar5 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = *(uint *)(_Var6 + 0x14);" (assignment_expression "uVar4 = *(uint *)(_Var6 + 0x14)" identifier = (pointer_expression "*(uint *)(_Var6 + 0x14)" * (cast_expression "(uint *)(_Var6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_Var6 + 0x14)" ( (binary_expression "_Var6 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((int)p_Var3 < (int)in_v1) goto LAB_002efaa4;" if (parenthesized_expression "((int)p_Var3 < (int)in_v1)" ( (binary_expression "(int)p_Var3 < (int)in_v1" (cast_expression "(int)p_Var3" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)in_v1" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (do_statement "do {\n    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;\n    bVar1 = false;\n    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);\n    _Var7 = _Var6;\n    while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }\n  } while( true );" do (compound_statement "{\n    if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;\n    bVar1 = false;\n    _Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);\n    _Var7 = _Var6;\n    while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }\n  }" { (if_statement "if ((in_v1 == p_Var3) && (uVar5 < uVar4)) goto LAB_002efaa4;" if (parenthesized_expression "((in_v1 == p_Var3) && (uVar5 < uVar4))" ( (binary_expression "(in_v1 == p_Var3) && (uVar5 < uVar4)" (parenthesized_expression "(in_v1 == p_Var3)" ( (binary_expression "in_v1 == p_Var3" identifier == identifier) )) && (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) ))) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "_Var2 = *(_Rb_tree_color *)(_Var6 + 0xc);" (assignment_expression "_Var2 = *(_Rb_tree_color *)(_Var6 + 0xc)" identifier = (pointer_expression "*(_Rb_tree_color *)(_Var6 + 0xc)" * (cast_expression "(_Rb_tree_color *)(_Var6 + 0xc)" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_Var6 + 0xc)" ( (binary_expression "_Var6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "_Var7 = _Var6;" (assignment_expression "_Var7 = _Var6" identifier = identifier) ;) (while_statement "while( true ) {\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      _Var6 = _Var2;\n      if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);\n      uVar4 = *(uint *)(_Var6 + 0x14);\n      if ((int)in_v1 <= (int)p_Var3) break;\nLAB_002efaa4:\n      bVar1 = true;\n      _Var2 = *(_Rb_tree_color *)(_Var6 + 8);\n      _Var7 = _Var6;\n    }" { (expression_statement "_Var6 = _Var2;" (assignment_expression "_Var6 = _Var2" identifier = identifier) ;) (if_statement "if (_Var6 == _S_red) {\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" if (parenthesized_expression "(_Var6 == _S_red)" ( (binary_expression "_Var6 == _S_red" identifier == identifier) )) (compound_statement "{\n        _Var6 = _Var7;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" { (expression_statement "_Var6 = _Var7;" (assignment_expression "_Var6 = _Var7" identifier = identifier) ;) (if_statement "if (!bVar1) goto LAB_002efabc;" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (goto_statement "goto LAB_002efabc;" goto statement_identifier ;)) (goto_statement "goto LAB_002efb1c;" goto statement_identifier ;) })) (expression_statement "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10);" (assignment_expression "in_v1 = *(_Rb_tree_node_base **)(_Var6 + 0x10)" identifier = (pointer_expression "*(_Rb_tree_node_base **)(_Var6 + 0x10)" * (cast_expression "(_Rb_tree_node_base **)(_Var6 + 0x10)" ( (type_descriptor "_Rb_tree_node_base **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(_Var6 + 0x10)" ( (binary_expression "_Var6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(_Var6 + 0x14);" (assignment_expression "uVar4 = *(uint *)(_Var6 + 0x14)" identifier = (pointer_expression "*(uint *)(_Var6 + 0x14)" * (cast_expression "(uint *)(_Var6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_Var6 + 0x14)" ( (binary_expression "_Var6 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((int)in_v1 <= (int)p_Var3) break;" if (parenthesized_expression "((int)in_v1 <= (int)p_Var3)" ( (binary_expression "(int)in_v1 <= (int)p_Var3" (cast_expression "(int)in_v1" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)p_Var3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002efaa4:\n      bVar1 = true;" statement_identifier : (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;)) (expression_statement "_Var2 = *(_Rb_tree_color *)(_Var6 + 8);" (assignment_expression "_Var2 = *(_Rb_tree_color *)(_Var6 + 8)" identifier = (pointer_expression "*(_Rb_tree_color *)(_Var6 + 8)" * (cast_expression "(_Rb_tree_color *)(_Var6 + 8)" ( (type_descriptor "_Rb_tree_color *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_Var6 + 8)" ( (binary_expression "_Var6 + 8" identifier + number_literal) ))))) ;) (expression_statement "_Var7 = _Var6;" (assignment_expression "_Var7 = _Var6" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "longlong *\nstd::\n_Rb_tree<long_long,std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_a1;\n  int *in_a2;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  \n  iVar7 = *(int *)(in_a1 + 8);\n  if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }\n  iVar4 = *in_a2;\n  iVar3 = *(int *)(iVar7 + 0x10);\n  uVar6 = in_a2[1];\n  uVar5 = *(uint *)(iVar7 + 0x14);\n  if (iVar4 < iVar3) goto LAB_002efaa4;\n  do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );\n}\n\n" (ERROR "longlong *\nstd::\n_Rb_tree<long_long," (binary_expression "longlong *\nstd::\n_Rb_tree<long_long" (binary_expression "longlong *\nstd" identifier * identifier) (ERROR "::\n_Rb_tree" : : identifier) < identifier) ,) (labeled_statement "std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" statement_identifier (ERROR "::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std:" : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,long_long>>,std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>,std" identifier >> (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int,long_long>>>,std" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>>,std" identifier >> (ERROR ">," > ,) identifier)) : : (binary_expression "less<long_long>,std" (binary_expression "less<long_long" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" identifier < identifier) , identifier) :) : (expression_statement "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (comma_expression "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" identifier >> (ERROR ">>\n::" >> : :) (call_expression "_M_get_insert_unique_pos(longlong *param_1)" identifier (argument_list "(longlong *param_1)" ( (binary_expression "longlong *param_1" identifier * identifier) ))))) ;)) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_a1;\n  int *in_a2;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  \n  iVar7 = *(int *)(in_a1 + 8);\n  if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }\n  iVar4 = *in_a2;\n  iVar3 = *(int *)(iVar7 + 0x10);\n  uVar6 = in_a2[1];\n  uVar5 = *(uint *)(iVar7 + 0x14);\n  if (iVar4 < iVar3) goto LAB_002efaa4;\n  do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_a1;" primitive_type identifier ;) (declaration "int *in_a2;" primitive_type (pointer_declarator "*in_a2" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (expression_statement "iVar7 = *(int *)(in_a1 + 8);" (assignment_expression "iVar7 = *(int *)(in_a1 + 8)" identifier = (pointer_expression "*(int *)(in_a1 + 8)" * (cast_expression "(int *)(in_a1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 8)" ( (binary_expression "in_a1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" { (expression_statement "iVar8 = in_a1 + 4;" (assignment_expression "iVar8 = in_a1 + 4" identifier = (binary_expression "in_a1 + 4" identifier + number_literal)) ;) (labeled_statement "LAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" statement_identifier : (if_statement "if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" if (parenthesized_expression "(*(int *)(in_a1 + 0xc) == iVar8)" ( (binary_expression "*(int *)(in_a1 + 0xc) == iVar8" (pointer_expression "*(int *)(in_a1 + 0xc)" * (cast_expression "(int *)(in_a1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 0xc)" ( (binary_expression "in_a1 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" { (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return param_1;" return identifier ;) }))) (expression_statement "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);" (assignment_expression "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" identifier = (call_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" (parenthesized_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)" ( (pointer_expression "*(code *)PTR__Rb_tree_decrement_004c1a5c" * (cast_expression "(code *)PTR__Rb_tree_decrement_004c1a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" identifier = (pointer_expression "*in_a2" * identifier)) ;) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" statement_identifier : (if_statement "if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" if (parenthesized_expression "((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5))))" ( (binary_expression "(iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))" (parenthesized_expression "(iVar4 <= iVar3)" ( (binary_expression "iVar4 <= iVar3" identifier <= identifier) )) && (parenthesized_expression "((iVar4 != iVar3 || (uVar6 <= uVar5)))" ( (parenthesized_expression "(iVar4 != iVar3 || (uVar6 <= uVar5))" ( (binary_expression "iVar4 != iVar3 || (uVar6 <= uVar5)" (binary_expression "iVar4 != iVar3" identifier != identifier) || (parenthesized_expression "(uVar6 <= uVar5)" ( (binary_expression "uVar6 <= uVar5" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" { (expression_statement "*(int *)param_1 = iVar7;" (assignment_expression "*(int *)param_1 = iVar7" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined4 *)((int)param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + 4) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + 4)" * (cast_expression "(undefined4 *)((int)param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1;" return identifier ;) }))) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" * (cast_expression "(int *)((int)param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 4)" ( (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" identifier = (pointer_expression "*in_a2" * identifier)) ;) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" identifier = (subscript_expression "in_a2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < iVar3) goto LAB_002efaa4;" if (parenthesized_expression "(iVar4 < iVar3)" ( (binary_expression "iVar4 < iVar3" identifier < identifier) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (do_statement "do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  }" { (if_statement "if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;" if (parenthesized_expression "((iVar3 == iVar4) && (uVar6 < uVar5))" ( (binary_expression "(iVar3 == iVar4) && (uVar6 < uVar5)" (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) && (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) ))) )) (goto_statement "goto LAB_002efaa4;" goto statement_identifier ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "iVar2 = *(int *)(iVar7 + 0xc);" (assignment_expression "iVar2 = *(int *)(iVar7 + 0xc)" identifier = (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (while_statement "while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" { (expression_statement "iVar7 = iVar2;" (assignment_expression "iVar7 = iVar2" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" { (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (if_statement "if (!bVar1) goto LAB_002efabc;" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (goto_statement "goto LAB_002efabc;" goto statement_identifier ;)) (goto_statement "goto LAB_002efb1c;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" identifier = (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 <= iVar4) break;" if (parenthesized_expression "(iVar3 <= iVar4)" ( (binary_expression "iVar3 <= iVar4" identifier <= identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_002efaa4:\n      bVar1 = true;" statement_identifier : (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;)) (expression_statement "iVar2 = *(int *)(iVar7 + 8);" (assignment_expression "iVar2 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))
(translation_unit (ERROR (binary_expression (binary_expression IDENT * IDENT) (ERROR : : IDENT) < IDENT) ,) (labeled_statement statement_identifier (ERROR : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , (binary_expression IDENT >> (ERROR ,) IDENT)) : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , (binary_expression IDENT >> (ERROR > ,) IDENT)) : : (binary_expression (binary_expression IDENT < IDENT) > (ERROR ,) IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) :) : (expression_statement (comma_expression (binary_expression IDENT < IDENT) , (binary_expression IDENT >> (ERROR >> : :) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) ))))) ;)) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (return_statement return IDENT ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) }))
(ERROR "longlong *\nstd::\n_Rb_tree<long_long," (binary_expression "longlong *\nstd::\n_Rb_tree<long_long" (binary_expression "longlong *\nstd" (identifier "longlong") (* "*") (identifier "std")) (ERROR "::\n_Rb_tree" (: ":") (: ":") (identifier "_Rb_tree")) (< "<") (identifier "long_long")) (, ",")) (labeled_statement "std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (statement_identifier "std") (ERROR "::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std:" (: ":") (: ":") (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" (identifier "pair") (< "<") (identifier "long_long_const")) (, ",") (identifier "std")) (: ":") (: ":") (comma_expression "pair<unsigned_int,long_long>>,std" (binary_expression "pair<unsigned_int" (identifier "pair") (< "<") (identifier "unsigned_int")) (, ",") (binary_expression "long_long>>,std" (identifier "long_long") (>> ">>") (ERROR "," (, ",")) (identifier "std"))) (: ":") (: ":") (binary_expression "_Select1st<std" (identifier "_Select1st") (< "<") (identifier "std")) (: ":") (: ":") (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" (identifier "pair") (< "<") (identifier "long_long_const")) (, ",") (identifier "std")) (: ":") (: ":") (comma_expression "pair<unsigned_int,long_long>>>,std" (binary_expression "pair<unsigned_int" (identifier "pair") (< "<") (identifier "unsigned_int")) (, ",") (binary_expression "long_long>>>,std" (identifier "long_long") (>> ">>") (ERROR ">," (> ">") (, ",")) (identifier "std"))) (: ":") (: ":") (binary_expression "less<long_long>,std" (binary_expression "less<long_long" (identifier "less") (< "<") (identifier "long_long")) (> ">") (ERROR "," (, ",")) (identifier "std")) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (comma_expression "pair<long_long_const,std" (binary_expression "pair<long_long_const" (identifier "pair") (< "<") (identifier "long_long_const")) (, ",") (identifier "std")) (: ":")) (: ":") (expression_statement "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (comma_expression "pair<unsigned_int,long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (binary_expression "pair<unsigned_int" (identifier "pair") (< "<") (identifier "unsigned_int")) (, ",") (binary_expression "long_long>>>>\n::_M_get_insert_unique_pos(longlong *param_1)" (identifier "long_long") (>> ">>") (ERROR ">>\n::" (>> ">>") (: ":") (: ":")) (call_expression "_M_get_insert_unique_pos(longlong *param_1)" (identifier "_M_get_insert_unique_pos") (argument_list "(longlong *param_1)" (( "(") (binary_expression "longlong *param_1" (identifier "longlong") (* "*") (identifier "param_1")) () ")"))))) (; ""))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_a1;\n  int *in_a2;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  \n  iVar7 = *(int *)(in_a1 + 8);\n  if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }\n  iVar4 = *in_a2;\n  iVar3 = *(int *)(iVar7 + 0x10);\n  uVar6 = in_a2[1];\n  uVar5 = *(uint *)(iVar7 + 0x14);\n  if (iVar4 < iVar3) goto LAB_002efaa4;\n  do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int in_a1;" (primitive_type "int") (identifier "in_a1") (; ";")) (declaration "int *in_a2;" (primitive_type "int") (pointer_declarator "*in_a2" (* "*") (identifier "in_a2")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (expression_statement "iVar7 = *(int *)(in_a1 + 8);" (assignment_expression "iVar7 = *(int *)(in_a1 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(in_a1 + 8)" (* "*") (cast_expression "(int *)(in_a1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_a1 + 8)" (( "(") (binary_expression "in_a1 + 8" (identifier "in_a1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar7 == 0) {\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar8 = in_a1 + 4;\nLAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }\n    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);\n    iVar3 = *(int *)(iVar7 + 0x10);\n    uVar5 = *(uint *)(iVar7 + 0x14);\n    iVar4 = *in_a2;\n    uVar6 = in_a2[1];\nLAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }\n    *(undefined4 *)param_1 = 0;\n    *(int *)((int)param_1 + 4) = iVar8;\n    return param_1;\n  }" ({ "{") (expression_statement "iVar8 = in_a1 + 4;" (assignment_expression "iVar8 = in_a1 + 4" (identifier "iVar8") (= "=") (binary_expression "in_a1 + 4" (identifier "in_a1") (+ "+") (number_literal "4"))) (; ";")) (labeled_statement "LAB_002efb1c:\n    if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" (statement_identifier "LAB_002efb1c") (: ":") (if_statement "if (*(int *)(in_a1 + 0xc) == iVar8) {\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(*(int *)(in_a1 + 0xc) == iVar8)" (( "(") (binary_expression "*(int *)(in_a1 + 0xc) == iVar8" (pointer_expression "*(int *)(in_a1 + 0xc)" (* "*") (cast_expression "(int *)(in_a1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_a1 + 0xc)" (( "(") (binary_expression "in_a1 + 0xc" (identifier "in_a1") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "iVar8")) () ")")) (compound_statement "{\n      *(int *)((int)param_1 + 4) = iVar8;\n      *(undefined4 *)param_1 = 0;\n      return param_1;\n    }" ({ "{") (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" (* "*") (cast_expression "(int *)((int)param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 4)" (( "(") (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" (* "*") (cast_expression "(undefined4 *)param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))) (expression_statement "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);" (assignment_expression "iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8)" (parenthesized_expression "(*(code *)PTR__Rb_tree_decrement_004c1a5c)" (( "(") (pointer_expression "*(code *)PTR__Rb_tree_decrement_004c1a5c" (* "*") (cast_expression "(code *)PTR__Rb_tree_decrement_004c1a5c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__Rb_tree_decrement_004c1a5c"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar7 + 0x14)" (* "*") (cast_expression "(uint *)(iVar7 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x14)" (( "(") (binary_expression "iVar7 + 0x14" (identifier "iVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" (identifier "iVar4") (= "=") (pointer_expression "*in_a2" (* "*") (identifier "in_a2"))) (; ";")) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" (identifier "uVar6") (= "=") (subscript_expression "in_a2[1]" (identifier "in_a2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (labeled_statement "LAB_002efabc:\n    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" (statement_identifier "LAB_002efabc") (: ":") (if_statement "if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" (if "if") (parenthesized_expression "((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5))))" (( "(") (binary_expression "(iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))" (parenthesized_expression "(iVar4 <= iVar3)" (( "(") (binary_expression "iVar4 <= iVar3" (identifier "iVar4") (<= "<=") (identifier "iVar3")) () ")")) (&& "&&") (parenthesized_expression "((iVar4 != iVar3 || (uVar6 <= uVar5)))" (( "(") (parenthesized_expression "(iVar4 != iVar3 || (uVar6 <= uVar5))" (( "(") (binary_expression "iVar4 != iVar3 || (uVar6 <= uVar5)" (binary_expression "iVar4 != iVar3" (identifier "iVar4") (!= "!=") (identifier "iVar3")) (|| "||") (parenthesized_expression "(uVar6 <= uVar5)" (( "(") (binary_expression "uVar6 <= uVar5" (identifier "uVar6") (<= "<=") (identifier "uVar5")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *(int *)param_1 = iVar7;\n      *(undefined4 *)((int)param_1 + 4) = 0;\n      return param_1;\n    }" ({ "{") (expression_statement "*(int *)param_1 = iVar7;" (assignment_expression "*(int *)param_1 = iVar7" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "*(undefined4 *)((int)param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + 4) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + 4)" (* "*") (cast_expression "(undefined4 *)((int)param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 4)" (( "(") (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)param_1 = 0;" (assignment_expression "*(undefined4 *)param_1 = 0" (pointer_expression "*(undefined4 *)param_1" (* "*") (cast_expression "(undefined4 *)param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)((int)param_1 + 4) = iVar8;" (assignment_expression "*(int *)((int)param_1 + 4) = iVar8" (pointer_expression "*(int *)((int)param_1 + 4)" (* "*") (cast_expression "(int *)((int)param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 4)" (( "(") (binary_expression "(int)param_1 + 4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "iVar4 = *in_a2;" (assignment_expression "iVar4 = *in_a2" (identifier "iVar4") (= "=") (pointer_expression "*in_a2" (* "*") (identifier "in_a2"))) (; ";")) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar6 = in_a2[1];" (assignment_expression "uVar6 = in_a2[1]" (identifier "uVar6") (= "=") (subscript_expression "in_a2[1]" (identifier "in_a2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar7 + 0x14)" (* "*") (cast_expression "(uint *)(iVar7 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x14)" (( "(") (binary_expression "iVar7 + 0x14" (identifier "iVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar4 < iVar3) goto LAB_002efaa4;" (if "if") (parenthesized_expression "(iVar4 < iVar3)" (( "(") (binary_expression "iVar4 < iVar3" (identifier "iVar4") (< "<") (identifier "iVar3")) () ")")) (goto_statement "goto LAB_002efaa4;" (goto "goto") (statement_identifier "LAB_002efaa4") (; ";"))) (do_statement "do {\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;\n    bVar1 = false;\n    iVar2 = *(int *)(iVar7 + 0xc);\n    iVar8 = iVar7;\n    while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }\n  }" ({ "{") (if_statement "if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;" (if "if") (parenthesized_expression "((iVar3 == iVar4) && (uVar6 < uVar5))" (( "(") (binary_expression "(iVar3 == iVar4) && (uVar6 < uVar5)" (parenthesized_expression "(iVar3 == iVar4)" (( "(") (binary_expression "iVar3 == iVar4" (identifier "iVar3") (== "==") (identifier "iVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar6 < uVar5)" (( "(") (binary_expression "uVar6 < uVar5" (identifier "uVar6") (< "<") (identifier "uVar5")) () ")"))) () ")")) (goto_statement "goto LAB_002efaa4;" (goto "goto") (statement_identifier "LAB_002efaa4") (; ";"))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "iVar2 = *(int *)(iVar7 + 0xc);" (assignment_expression "iVar2 = *(int *)(iVar7 + 0xc)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar7 + 0xc)" (* "*") (cast_expression "(int *)(iVar7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" (identifier "iVar8") (= "=") (identifier "iVar7")) (; ";")) (while_statement "while( true ) {\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar7 = iVar2;\n      if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }\n      iVar3 = *(int *)(iVar7 + 0x10);\n      uVar5 = *(uint *)(iVar7 + 0x14);\n      if (iVar3 <= iVar4) break;\nLAB_002efaa4:\n      bVar1 = true;\n      iVar2 = *(int *)(iVar7 + 8);\n      iVar8 = iVar7;\n    }" ({ "{") (expression_statement "iVar7 = iVar2;" (assignment_expression "iVar7 = iVar2" (identifier "iVar7") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar7 == 0) {\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar7 = iVar8;\n        if (!bVar1) goto LAB_002efabc;\n        goto LAB_002efb1c;\n      }" ({ "{") (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" (identifier "iVar7") (= "=") (identifier "iVar8")) (; ";")) (if_statement "if (!bVar1) goto LAB_002efabc;" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (goto_statement "goto LAB_002efabc;" (goto "goto") (statement_identifier "LAB_002efabc") (; ";"))) (goto_statement "goto LAB_002efb1c;" (goto "goto") (statement_identifier "LAB_002efb1c") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(iVar7 + 0x10);" (assignment_expression "iVar3 = *(int *)(iVar7 + 0x10)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar5 = *(uint *)(iVar7 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar7 + 0x14)" (* "*") (cast_expression "(uint *)(iVar7 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x14)" (( "(") (binary_expression "iVar7 + 0x14" (identifier "iVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar3 <= iVar4) break;" (if "if") (parenthesized_expression "(iVar3 <= iVar4)" (( "(") (binary_expression "iVar3 <= iVar4" (identifier "iVar3") (<= "<=") (identifier "iVar4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_002efaa4:\n      bVar1 = true;" (statement_identifier "LAB_002efaa4") (: ":") (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";"))) (expression_statement "iVar2 = *(int *)(iVar7 + 8);" (assignment_expression "iVar2 = *(int *)(iVar7 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" (identifier "iVar8") (= "=") (identifier "iVar7")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))

/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<long_long_int,_std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>,_std::_Select1st<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>,_std::less<long_long_int>,_std::allocator<std::pair<long_long_int_const,_std::pair<unsigned_int,_long_long_int>_>_>_>
   * this, key_type.conflict1 * __k) */

pair<type_1::type_7*,type_3::type_7*> __thiscall
type_1::
type_2<long_long_int,type_3::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>,type_3::_Select1st<type_1::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>_>,type_3::less<long_long_int>,type_3::allocator<type_1::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>_>_>
::function_1
          (type_2<long_long_int,type_3::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>,type_3::_Select1st<type_1::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>_>,type_3::less<long_long_int>,type_3::allocator<type_1::pair<long_long_int_const,type_3::pair<unsigned_int,type_4>_>_>_>
           *this,type_5 *var_4)

{
  bool bVar1;
  type_6 _Var2;
  type_7 *var_9;
  type_7 *var_8;
  int *in_a2;
  type_8 var_11;
  type_8 var_10;
  type_6 var_5;
  type_6 var_7;
  pair<type_1::type_7*,type_3::type_7*> var_1;
  pair<type_1::type_7*,type_3::type_7*> var_2;
  pair<type_1::type_7*,type_3::type_7*> var_3;
  
  var_5 = *(type_6 *)(var_4 + 1);
  if (var_5 == var_6) {
    var_7 = (int)var_4 + 4;
LAB_002efb1c:
    if (*(type_6 *)((int)var_4 + 0xc) == var_7) {
      (this->_M_impl).super__Rb_tree_header._M_header._M_color = var_7;
      *(type_9 *)&this->_M_impl = 0;
      var_3.first = (type_7 *)this;
      var_3.second = var_9;
      return var_3;
    }
    var_5 = (*(type_10 *)PTR__Rb_tree_decrement_004c1a5c)(var_7);
    var_9 = *(type_7 **)(var_5 + 0x10);
    var_11 = *(type_8 *)(var_5 + 0x14);
    var_8 = (type_7 *)*in_a2;
    var_10 = in_a2[1];
LAB_002efabc:
    if (((int)var_8 <= (int)var_9) && ((var_8 != var_9 || (var_10 <= var_11)))) {
      *(type_6 *)&this->_M_impl = var_5;
      (this->_M_impl).super__Rb_tree_header._M_header._M_color = var_6;
      var_2.first = (type_7 *)this;
      var_2.second = var_9;
      return var_2;
    }
    *(type_9 *)&this->_M_impl = 0;
    (this->_M_impl).super__Rb_tree_header._M_header._M_color = var_7;
    var_1.first = (type_7 *)this;
    var_1.second = var_9;
    return var_1;
  }
  var_8 = (type_7 *)*in_a2;
  var_9 = *(type_7 **)(var_5 + 0x10);
  var_10 = in_a2[1];
  var_11 = *(type_8 *)(var_5 + 0x14);
  if ((int)var_8 < (int)var_9) goto LAB_002efaa4;
  do {
    if ((var_9 == var_8) && (var_10 < var_11)) goto LAB_002efaa4;
    bVar1 = false;
    _Var2 = *(type_6 *)(var_5 + 0xc);
    var_7 = var_5;
    while( true ) {
      var_5 = _Var2;
      if (var_5 == var_6) {
        var_5 = var_7;
        if (!bVar1) goto LAB_002efabc;
        goto LAB_002efb1c;
      }
      var_9 = *(type_7 **)(var_5 + 0x10);
      var_11 = *(type_8 *)(var_5 + 0x14);
      if ((int)var_9 <= (int)var_8) break;
LAB_002efaa4:
      bVar1 = true;
      _Var2 = *(type_6 *)(var_5 + 8);
      var_7 = var_5;
    }
  } while( true );
}


(translation_unit (ERROR (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) (ERROR) right: (identifier))) (binary_expression left: (identifier) right: (identifier)) (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) (ERROR) right: (identifier))) (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (MISSING ";"))) (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (return_statement (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (true)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) condition: (parenthesized_expression (true)))))

/* std::_Rb_tree<long long, std::pair<long long const, std::pair<unsigned int, long long> >,
   std::_Select1st<std::pair<long long const, std::pair<unsigned int, long long> > >, std::less<long
   long>, std::allocator<std::pair<long long const, std::pair<unsigned int, long long> > >
   >::MASKED(long long const&) */

longlong *
std::
_Rb_tree<long_long,std::pair<long_long_const,std::pair<unsigned_int,long_long>>,std::_Select1st<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>,std::less<long_long>,std::allocator<std::pair<long_long_const,std::pair<unsigned_int,long_long>>>>
::MASKED(longlong *param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_a1;
  int *in_a2;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  
  iVar7 = *(int *)(in_a1 + 8);
  if (iVar7 == 0) {
    iVar8 = in_a1 + 4;
LAB_002efb1c:
    if (*(int *)(in_a1 + 0xc) == iVar8) {
      *(int *)((int)param_1 + 4) = iVar8;
      *(undefined4 *)param_1 = 0;
      return param_1;
    }
    iVar7 = (*(code *)PTR__Rb_tree_decrement_004c1a5c)(iVar8);
    iVar3 = *(int *)(iVar7 + 0x10);
    uVar5 = *(uint *)(iVar7 + 0x14);
    iVar4 = *in_a2;
    uVar6 = in_a2[1];
LAB_002efabc:
    if ((iVar4 <= iVar3) && ((iVar4 != iVar3 || (uVar6 <= uVar5)))) {
      *(int *)param_1 = iVar7;
      *(undefined4 *)((int)param_1 + 4) = 0;
      return param_1;
    }
    *(undefined4 *)param_1 = 0;
    *(int *)((int)param_1 + 4) = iVar8;
    return param_1;
  }
  iVar4 = *in_a2;
  iVar3 = *(int *)(iVar7 + 0x10);
  uVar6 = in_a2[1];
  uVar5 = *(uint *)(iVar7 + 0x14);
  if (iVar4 < iVar3) goto LAB_002efaa4;
  do {
    if ((iVar3 == iVar4) && (uVar6 < uVar5)) goto LAB_002efaa4;
    bVar1 = false;
    iVar2 = *(int *)(iVar7 + 0xc);
    iVar8 = iVar7;
    while( true ) {
      iVar7 = iVar2;
      if (iVar7 == 0) {
        iVar7 = iVar8;
        if (!bVar1) goto LAB_002efabc;
        goto LAB_002efb1c;
      }
      iVar3 = *(int *)(iVar7 + 0x10);
      uVar5 = *(uint *)(iVar7 + 0x14);
      if (iVar3 <= iVar4) break;
LAB_002efaa4:
      bVar1 = true;
      iVar2 = *(int *)(iVar7 + 8);
      iVar8 = iVar7;
    }
  } while( true );
}

