
/* DWARF original name: _M_emplace_unique<std::pair<long int, gold::Cie*> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool>
   _M_emplace_unique<std::pair<long_int,_gold::Cie*>_>(_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>
   * this, pair<long_int,_gold::Cie*> * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> __thiscall
std::
_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>
::_M_emplace_unique<std::pair<long_int,_gold::Cie*>_>
          (_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>
           *this,pair<long_int,_gold::Cie*> *__args_0)

{
  _Rb_tree_header *p_Var1;
  size_t *psVar2;
  ulong uVar3;
  ulong uVar4;
  _Rb_tree_node_base *p_Var5;
  _Rb_tree_node_base *p_Var6;
  bool bVar7;
  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar8;
  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar9;
  
  p_Var1 = &(this->_M_impl).super__Rb_tree_header;
  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);
  uVar3 = __args_0->first;
  *(ulong *)(pVar8.first._M_node + 1) = uVar3;
  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;
  if (p_Var5 == (_Rb_tree_node_base *)0x0) {
    p_Var6 = &p_Var1->_M_header;
    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {
      bVar7 = true;
      goto LAB_002c72d8;
    }
LAB_002c7307:
    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);
    if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))
    {
LAB_002c7318:
      operator_delete(pVar8.first._M_node);
      pVar9._8_8_ = 0;
      pVar9.first._M_node = p_Var5;
      return pVar9;
    }
  }
  else {
    do {
      p_Var6 = p_Var5;
      uVar4 = *(ulong *)(p_Var6 + 1);
      if (uVar3 < uVar4) {
        p_Var5 = p_Var6->_M_left;
      }
      else {
        p_Var5 = p_Var6->_M_right;
      }
    } while (p_Var5 != (_Base_ptr)0x0);
    if (uVar3 < uVar4) {
      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;
    }
    else {
      p_Var5 = p_Var6;
      if (uVar3 <= uVar4) goto LAB_002c7318;
    }
  }
  bVar7 = true;
  if (p_Var1 != (_Rb_tree_header *)p_Var6) {
    bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);
  }
LAB_002c72d8:
  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  pVar8._8_8_ = 1;
  return pVar8;
}



undefined1  [16] FUN_002c7260(long param_1,ulong *param_2)

{
  ulong uVar1;
  ulong uVar2;
  ulong uVar3;
  ulong uVar4;
  ulong uVar5;
  bool bVar6;
  undefined1 auVar7 [16];
  undefined1 auVar8 [16];
  
  uVar1 = param_1 + 8;
  auVar7._0_8_ = FUN_002f0690(0x30);
  uVar2 = *param_2;
  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;
  uVar4 = *(ulong *)(param_1 + 0x10);
  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];
  if (uVar4 == 0) {
    uVar5 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar6 = true;
      goto LAB_002c72d8;
    }
LAB_002c7307:
    uVar4 = thunk_FUN_002f31c0(uVar5);
    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {
LAB_002c7318:
      FUN_002f1e60(auVar7._0_8_);
      auVar8._8_8_ = 0;
      auVar8._0_8_ = uVar4;
      return auVar8;
    }
  }
  else {
    do {
      uVar5 = uVar4;
      uVar3 = *(ulong *)(uVar5 + 0x20);
      if (uVar2 < uVar3) {
        uVar4 = *(ulong *)(uVar5 + 0x10);
      }
      else {
        uVar4 = *(ulong *)(uVar5 + 0x18);
      }
    } while (uVar4 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;
    }
    else {
      uVar4 = uVar5;
      if (uVar2 <= uVar3) goto LAB_002c7318;
    }
  }
  bVar6 = true;
  if (uVar1 != uVar5) {
    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);
  }
LAB_002c72d8:
  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar7._8_8_ = 1;
  return auVar7;
}


PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x30
PUSH RBP
LEA R14,[R12 + 0x8]
PUSH RBX
MOV RBX,RSI
CALL 0x002f0690
MOV R13,qword ptr [RBX]
MOV RBP,RAX
MOV qword ptr [RAX + 0x20],R13
MOV RAX,qword ptr [RBX + 0x8]
MOV RBX,qword ptr [R12 + 0x10]
MOV qword ptr [RBP + 0x28],RAX
TEST RBX,RBX
JNZ 0x002c72b1
JMP 0x002c7350
MOV RAX,qword ptr [RBX + 0x10]
MOV EDX,0x1
TEST RAX,RAX
JZ 0x002c72c5
MOV RBX,RAX
MOV RCX,qword ptr [RBX + 0x20]
CMP R13,RCX
JC 0x002c72a0
MOV RAX,qword ptr [RBX + 0x18]
XOR EDX,EDX
TEST RAX,RAX
JNZ 0x002c72ae
TEST DL,DL
JNZ 0x002c7300
CMP R13,RCX
JBE 0x002c7318
MOV EDI,0x1
CMP R14,RBX
JNZ 0x002c733f
MOV RDX,RBX
MOV RCX,R14
MOV RSI,RBP
CALL 0x002f3360
POP RBX
MOV RAX,RBP
ADD qword ptr [R12 + 0x28],0x1
POP RBP
MOV EDX,0x1
POP R12
POP R13
POP R14
RET
CMP qword ptr [R12 + 0x18],RBX
JZ 0x002c72ce
MOV RDI,RBX
CALL 0x002f3280
CMP R13,qword ptr [RAX + 0x20]
JA 0x002c7330
MOV RBX,RAX
MOV RDI,RBP
CALL 0x002f1e60
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
TEST RBX,RBX
JZ 0x002c7318
MOV EDI,0x1
CMP R14,RBX
JZ 0x002c72d8
XOR EDI,EDI
CMP R13,qword ptr [RBX + 0x20]
SETC DIL
JMP 0x002c72d8
MOV RBX,R14
CMP qword ptr [R12 + 0x18],R14
JNZ 0x002c7307
MOV EDI,0x1
JMP 0x002c72d8
(translation_unit "undefined1  [16] FUN_002c7260(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_002c7260(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" type_identifier (ERROR "(long param_1,ulong" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "auVar7._0_8_ = FUN_002f0690(0x30);" (assignment_expression "auVar7._0_8_ = FUN_002f0690(0x30)" (field_expression "auVar7._0_8_" identifier . field_identifier) = (call_expression "FUN_002f0690(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x20)" * (cast_expression "(ulong *)(auVar7._0_8_ + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x20)" ( (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1]" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x28)" * (cast_expression "(ulong *)(auVar7._0_8_ + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x28)" ( (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" { (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" ( (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (goto_statement "goto LAB_002c72d8;" goto statement_identifier ;) })) (labeled_statement "LAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);" statement_identifier : (expression_statement "uVar4 = thunk_FUN_002f31c0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_002f31c0(uVar5)" identifier = (call_expression "thunk_FUN_002f31c0(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" if (parenthesized_expression "((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" ( (binary_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20))" ( (binary_expression "uVar2 <= *(ulong *)(uVar4 + 0x20)" identifier <= (pointer_expression "*(ulong *)(uVar4 + 0x20)" * (cast_expression "(ulong *)(uVar4 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" ( (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" identifier = identifier) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" { (labeled_statement "LAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);" statement_identifier : (expression_statement "FUN_002f1e60(auVar7._0_8_);" (call_expression "FUN_002f1e60(auVar7._0_8_)" identifier (argument_list "(auVar7._0_8_)" ( (field_expression "auVar7._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar8;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" { (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" do (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" { (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" else (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_002c7307;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" else (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_002c7318;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_002c7318;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar5)" ( (binary_expression "uVar1 != uVar5" identifier != identifier) )) (compound_statement "{\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" { (expression_statement "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20)" identifier = (binary_expression "uVar2 < *(ulong *)(uVar5 + 0x20)" identifier < (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" statement_identifier : (expression_statement "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1)" identifier (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" ( identifier , (field_expression "auVar7._0_8_" identifier . field_identifier) , identifier , identifier ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar7;" return identifier ;) })))
(translation_unit "/* DWARF original name: _M_emplace_unique<std::pair<long int, gold::Cie*> >\n   DWARF original prototype:\n   pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool>\n   _M_emplace_unique<std::pair<long_int,_gold::Cie*>_>(_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n   * this, pair<long_int,_gold::Cie*> * __args#0) */\n\npair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> __thiscall\nstd::\n_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n::_M_emplace_unique<std::pair<long_int,_gold::Cie*>_>\n          (_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n           *this,pair<long_int,_gold::Cie*> *__args_0)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  ulong uVar3;\n  ulong uVar4;\n  _Rb_tree_node_base *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  bool bVar7;\n  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar8;\n  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar9;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);\n  uVar3 = __args_0->first;\n  *(ulong *)(pVar8.first._M_node + 1) = uVar3;\n  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;\n  if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))\n    {\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }\n  }\n  bVar7 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);\n  }\nLAB_002c72d8:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar8._8_8_ = 1;\n  return pVar8;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> __thiscall\nstd::\n_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n::_M_emplace_unique<std::pair<long_int,_gold::Cie*>_>\n          (_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n           *this,pair<long_int,_gold::Cie*> *__args_0)" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , (binary_expression "_gold::Cie*>_>,_bool> __thiscall\nstd::\n_Rb_tree<long_unsigned_int" (binary_expression "_gold::Cie*>_>,_bool> __thiscall" (binary_expression "_gold::Cie*>_>,_bool" (binary_expression "_gold::Cie*>_" identifier (ERROR "::Cie*" : : identifier *) > identifier) > (ERROR "," ,) identifier) > identifier) (ERROR "std::\n_Rb_tree" identifier : : identifier) < identifier) , (binary_expression "_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std" (binary_expression "_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_" identifier (ERROR "::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*" : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Cie*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : : identifier *) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<long_unsigned_int>,_std" (binary_expression "less<long_unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , (binary_expression "_gold::Cie*>_>_>\n::_M_emplace_unique<std" (binary_expression "_gold::Cie*>_>_>\n::_M_emplace_unique" (binary_expression "_gold::Cie*>_>_" (binary_expression "_gold::Cie*>_" identifier (ERROR "::Cie*" : : identifier *) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_gold::Cie*>_>\n          (_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n           *this,pair<long_int,_gold::Cie*> *__args_0)" (binary_expression "_gold::Cie*>_" identifier (ERROR "::Cie*" : : identifier *) > identifier) > (parenthesized_expression "(_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n           *this,pair<long_int,_gold::Cie*> *__args_0)" ( (ERROR "_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>\n           *this,pair<long_int,_gold::" (comma_expression "_Rb_tree<long_unsigned_int,_std" (binary_expression "_Rb_tree<long_unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Cie*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "Cie*>_>,_std" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<long_unsigned_int>,_std" (binary_expression "less<long_unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Cie*>_>_>\n           *this,pair<long_int,_gold" (binary_expression "Cie*>_>_>\n           *this" (binary_expression "Cie*>_>_" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > identifier) > (pointer_expression "*this" * identifier)) , (comma_expression "pair<long_int,_gold" (binary_expression "pair<long_int" identifier < identifier) , identifier)) : :) (binary_expression "Cie*> *__args_0" identifier * (ERROR ">" >) (pointer_expression "*__args_0" * identifier)) )))) (compound_statement "{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  ulong uVar3;\n  ulong uVar4;\n  _Rb_tree_node_base *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  bool bVar7;\n  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar8;\n  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool> pVar9;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);\n  uVar3 = __args_0->first;\n  *(ulong *)(pVar8.first._M_node + 1) = uVar3;\n  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;\n  if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))\n    {\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }\n  }\n  bVar7 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);\n  }\nLAB_002c72d8:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar8._8_8_ = 1;\n  return pVar8;\n}" { (declaration "_Rb_tree_header *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "size_t *psVar2;" primitive_type (pointer_declarator "*psVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : :) (expression_statement "Cie*>_>,_bool> pVar8;" (binary_expression "Cie*>_>,_bool> pVar8" (binary_expression "Cie*>_>,_bool" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) > identifier) ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<long_unsigned_int_const,_gold" (binary_expression "pair<long_unsigned_int_const" identifier < identifier) , identifier) : :) (expression_statement "Cie*>_>,_bool> pVar9;" (binary_expression "Cie*>_>,_bool> pVar9" (binary_expression "Cie*>_>,_bool" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) > identifier) ;) (expression_statement "p_Var1 = &(this->_M_impl).super__Rb_tree_header;" (assignment_expression "p_Var1 = &(this->_M_impl).super__Rb_tree_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_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))) ;) (expression_statement "pVar8.first._M_node = (_Base_ptr)operator_new(0x30);" (assignment_expression "pVar8.first._M_node = (_Base_ptr)operator_new(0x30)" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x30)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "uVar3 = __args_0->first;" (assignment_expression "uVar3 = __args_0->first" identifier = (field_expression "__args_0->first" identifier -> field_identifier)) ;) (expression_statement "*(ulong *)(pVar8.first._M_node + 1) = uVar3;" (assignment_expression "*(ulong *)(pVar8.first._M_node + 1) = uVar3" (pointer_expression "*(ulong *)(pVar8.first._M_node + 1)" * (cast_expression "(ulong *)(pVar8.first._M_node + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar8.first._M_node + 1)" ( (binary_expression "pVar8.first._M_node + 1" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_parent" (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)) ;) (expression_statement "pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;" (assignment_expression "pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second" (field_expression "pVar8.first._M_node[1]._M_parent" (subscript_expression "pVar8.first._M_node[1]" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)__args_0->second" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__args_0->second" identifier -> field_identifier))) ;) (if_statement "if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))\n    {\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }\n  }" if (parenthesized_expression "(p_Var5 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var5 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))\n    {\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }" { (expression_statement "p_Var6 = &p_Var1->_M_header;" (assignment_expression "p_Var6 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }" if (parenthesized_expression "((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1)" ( (binary_expression "(_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1" (cast_expression "(_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (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) )) (compound_statement "{\n      bVar7 = true;\n      goto LAB_002c72d8;\n    }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (goto_statement "goto LAB_002c72d8;" goto statement_identifier ;) })) (labeled_statement "LAB_002c7307:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);" statement_identifier : (expression_statement "p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);" (assignment_expression "p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var6)" identifier (argument_list "(p_Var6)" ( identifier ))))) ;)) (if_statement "if ((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))\n    {\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }" if (parenthesized_expression "((uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))" ( (binary_expression "(uVar3 <= *(ulong *)(p_Var5 + 1)) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)" (parenthesized_expression "(uVar3 <= *(ulong *)(p_Var5 + 1))" ( (binary_expression "uVar3 <= *(ulong *)(p_Var5 + 1)" identifier <= (pointer_expression "*(ulong *)(p_Var5 + 1)" * (cast_expression "(ulong *)(p_Var5 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) ))))) )) || (parenthesized_expression "(p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)" ( (comma_expression "p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0" (assignment_expression "p_Var5 = p_Var6" identifier = identifier) , (binary_expression "p_Var6 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_002c7318:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }" { (labeled_statement "LAB_002c7318:\n      operator_delete(pVar8.first._M_node);" statement_identifier : (expression_statement "operator_delete(pVar8.first._M_node);" (call_expression "operator_delete(pVar8.first._M_node)" identifier (argument_list "(pVar8.first._M_node)" ( (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) ))) ;)) (expression_statement "pVar9._8_8_ = 0;" (assignment_expression "pVar9._8_8_ = 0" (field_expression "pVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar9.first._M_node = p_Var5;" (assignment_expression "pVar9.first._M_node = p_Var5" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar9;" return identifier ;) })) }) (else_clause "else {\n    do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }\n  }" else (compound_statement "{\n    do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }\n  }" { (do_statement "do {\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var6 = p_Var5;\n      uVar4 = *(ulong *)(p_Var6 + 1);\n      if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    }" { (expression_statement "p_Var6 = p_Var5;" (assignment_expression "p_Var6 = p_Var5" identifier = identifier) ;) (expression_statement "uVar4 = *(ulong *)(p_Var6 + 1);" (assignment_expression "uVar4 = *(ulong *)(p_Var6 + 1)" identifier = (pointer_expression "*(ulong *)(p_Var6 + 1)" * (cast_expression "(ulong *)(p_Var6 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var6 + 1)" ( (binary_expression "p_Var6 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < uVar4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\n        p_Var5 = p_Var6->_M_left;\n      }" { (expression_statement "p_Var5 = p_Var6->_M_left;" (assignment_expression "p_Var5 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else {\n        p_Var5 = p_Var6->_M_right;\n      }" else (compound_statement "{\n        p_Var5 = p_Var6->_M_right;\n      }" { (expression_statement "p_Var5 = p_Var6->_M_right;" (assignment_expression "p_Var5 = p_Var6->_M_right" identifier = (field_expression "p_Var6->_M_right" identifier -> field_identifier)) ;) }))) }) while (parenthesized_expression "(p_Var5 != (_Base_ptr)0x0)" ( (binary_expression "p_Var5 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (uVar3 < uVar4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;\n    }" { (if_statement "if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_002c7307;" if (parenthesized_expression "((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6)" ( (binary_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (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) )) (goto_statement "goto LAB_002c7307;" goto statement_identifier ;)) }) (else_clause "else {\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }" else (compound_statement "{\n      p_Var5 = p_Var6;\n      if (uVar3 <= uVar4) goto LAB_002c7318;\n    }" { (expression_statement "p_Var5 = p_Var6;" (assignment_expression "p_Var5 = p_Var6" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar4) goto LAB_002c7318;" if (parenthesized_expression "(uVar3 <= uVar4)" ( (binary_expression "uVar3 <= uVar4" identifier <= identifier) )) (goto_statement "goto LAB_002c7318;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);\n  }" if (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var6)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var6" identifier != (cast_expression "(_Rb_tree_header *)p_Var6" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);\n  }" { (expression_statement "bVar7 = uVar3 < *(ulong *)(p_Var6 + 1);" (assignment_expression "bVar7 = uVar3 < *(ulong *)(p_Var6 + 1)" identifier = (binary_expression "uVar3 < *(ulong *)(p_Var6 + 1)" identifier < (pointer_expression "*(ulong *)(p_Var6 + 1)" * (cast_expression "(ulong *)(p_Var6 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var6 + 1)" ( (binary_expression "p_Var6 + 1" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_002c72d8:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);" statement_identifier : (expression_statement "_Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header)" identifier (argument_list "(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header)" ( identifier , (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) , identifier , (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;" (assignment_expression "psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_node_count" & (field_expression "(this->_M_impl).super__Rb_tree_header._M_node_count" (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))) ;) (expression_statement "*psVar2 = *psVar2 + 1;" (assignment_expression "*psVar2 = *psVar2 + 1" (pointer_expression "*psVar2" * identifier) = (binary_expression "*psVar2 + 1" (pointer_expression "*psVar2" * identifier) + number_literal)) ;) (expression_statement "pVar8._8_8_ = 1;" (assignment_expression "pVar8._8_8_ = 1" (field_expression "pVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar8;" return identifier ;) }))
(translation_unit "undefined1  [16] FUN_002c7260(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_002c7260(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" type_identifier (ERROR "(long param_1,ulong" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "auVar7._0_8_ = FUN_002f0690(0x30);" (assignment_expression "auVar7._0_8_ = FUN_002f0690(0x30)" (field_expression "auVar7._0_8_" identifier . field_identifier) = (call_expression "FUN_002f0690(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x20)" * (cast_expression "(ulong *)(auVar7._0_8_ + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x20)" ( (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1]" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x28)" * (cast_expression "(ulong *)(auVar7._0_8_ + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x28)" ( (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" { (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" ( (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (goto_statement "goto LAB_002c72d8;" goto statement_identifier ;) })) (labeled_statement "LAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);" statement_identifier : (expression_statement "uVar4 = thunk_FUN_002f31c0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_002f31c0(uVar5)" identifier = (call_expression "thunk_FUN_002f31c0(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" if (parenthesized_expression "((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" ( (binary_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20))" ( (binary_expression "uVar2 <= *(ulong *)(uVar4 + 0x20)" identifier <= (pointer_expression "*(ulong *)(uVar4 + 0x20)" * (cast_expression "(ulong *)(uVar4 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" ( (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" identifier = identifier) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" { (labeled_statement "LAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);" statement_identifier : (expression_statement "FUN_002f1e60(auVar7._0_8_);" (call_expression "FUN_002f1e60(auVar7._0_8_)" identifier (argument_list "(auVar7._0_8_)" ( (field_expression "auVar7._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar8;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" { (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" do (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" { (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" else (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_002c7307;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" else (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_002c7318;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_002c7318;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar5)" ( (binary_expression "uVar1 != uVar5" identifier != identifier) )) (compound_statement "{\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" { (expression_statement "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20)" identifier = (binary_expression "uVar2 < *(ulong *)(uVar5 + 0x20)" identifier < (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" statement_identifier : (expression_statement "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1)" identifier (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" ( identifier , (field_expression "auVar7._0_8_" identifier . field_identifier) , identifier , identifier ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar7;" return identifier ;) })))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (function_definition TYPE (ERROR ( (type_descriptor (sized_type_specifier long TYPE)) , IDENT) (pointer_declarator * IDENT) (ERROR )) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) ))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = 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 < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (return_statement return IDENT ;) })))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (function_definition "FUN_002c7260(long param_1,ulong *param_2)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" (type_identifier "FUN_002c7260") (ERROR "(long param_1,ulong" (( "(") (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (identifier "ulong")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (ERROR ")" () ")")) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_002f0690(0x30);\n  uVar2 = *param_2;\n  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }\nLAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "undefined1 auVar7 [16];" (type_identifier "undefined1") (array_declarator "auVar7 [16]" (identifier "auVar7") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar8 [16];" (type_identifier "undefined1") (array_declarator "auVar8 [16]" (identifier "auVar8") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" (identifier "uVar1") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "auVar7._0_8_ = FUN_002f0690(0x30);" (assignment_expression "auVar7._0_8_ = FUN_002f0690(0x30)" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_002f0690(0x30)" (identifier "FUN_002f0690") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")")))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x20)" (* "*") (cast_expression "(ulong *)(auVar7._0_8_ + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar7._0_8_ + 0x20)" (( "(") (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x10)" (* "*") (cast_expression "(ulong *)(param_1 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];" (assignment_expression "*(ulong *)(auVar7._0_8_ + 0x28) = param_2[1]" (pointer_expression "*(ulong *)(auVar7._0_8_ + 0x28)" (* "*") (cast_expression "(ulong *)(auVar7._0_8_ + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar7._0_8_ + 0x28)" (( "(") (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }\nLAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);\n    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" ({ "{") (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" (identifier "uVar5") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "uVar1")) () ")")) (compound_statement "{\n      bVar6 = true;\n      goto LAB_002c72d8;\n    }" ({ "{") (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_002c72d8;" (goto "goto") (statement_identifier "LAB_002c72d8") (; ";")) (} "}"))) (labeled_statement "LAB_002c7307:\n    uVar4 = thunk_FUN_002f31c0(uVar5);" (statement_identifier "LAB_002c7307") (: ":") (expression_statement "uVar4 = thunk_FUN_002f31c0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_002f31c0(uVar5)" (identifier "uVar4") (= "=") (call_expression "thunk_FUN_002f31c0(uVar5)" (identifier "thunk_FUN_002f31c0") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";"))) (if_statement "if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" (if "if") (parenthesized_expression "((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" (( "(") (binary_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(ulong *)(uVar4 + 0x20))" (( "(") (binary_expression "uVar2 <= *(ulong *)(uVar4 + 0x20)" (identifier "uVar2") (<= "<=") (pointer_expression "*(ulong *)(uVar4 + 0x20)" (* "*") (cast_expression "(ulong *)(uVar4 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x20)" (( "(") (binary_expression "uVar4 + 0x20" (identifier "uVar4") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" (( "(") (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (, ",") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" ({ "{") (labeled_statement "LAB_002c7318:\n      FUN_002f1e60(auVar7._0_8_);" (statement_identifier "LAB_002c7318") (: ":") (expression_statement "FUN_002f1e60(auVar7._0_8_);" (call_expression "FUN_002f1e60(auVar7._0_8_)" (identifier "FUN_002f1e60") (argument_list "(auVar7._0_8_)" (( "(") (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) () ")"))) (; ";"))) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" (identifier "auVar8") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return auVar8;" (return "return") (identifier "auVar8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }\n  }" ({ "{") (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" (do "do") (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(ulong *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" ({ "{") (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" (identifier "uVar5") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x20)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x20)" (( "(") (binary_expression "uVar5 + 0x20" (identifier "uVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" ({ "{") (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x10)" (( "(") (binary_expression "uVar5 + 0x10" (identifier "uVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" (else "else") (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" ({ "{") (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x18)" (( "(") (binary_expression "uVar5 + 0x18" (identifier "uVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;\n    }" ({ "{") (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (identifier "uVar5")) () ")")) (goto_statement "goto LAB_002c7307;" (goto "goto") (statement_identifier "LAB_002c7307") (; ";"))) (} "}")) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" (else "else") (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_002c7318;\n    }" ({ "{") (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (uVar2 <= uVar3) goto LAB_002c7318;" (if "if") (parenthesized_expression "(uVar2 <= uVar3)" (( "(") (binary_expression "uVar2 <= uVar3" (identifier "uVar2") (<= "<=") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_002c7318;" (goto "goto") (statement_identifier "LAB_002c7318") (; ";"))) (} "}")))) (} "}")))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" (if "if") (parenthesized_expression "(uVar1 != uVar5)" (( "(") (binary_expression "uVar1 != uVar5" (identifier "uVar1") (!= "!=") (identifier "uVar5")) () ")")) (compound_statement "{\n    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);\n  }" ({ "{") (expression_statement "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20)" (identifier "bVar6") (= "=") (binary_expression "uVar2 < *(ulong *)(uVar5 + 0x20)" (identifier "uVar2") (< "<") (pointer_expression "*(ulong *)(uVar5 + 0x20)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x20)" (( "(") (binary_expression "uVar5 + 0x20" (identifier "uVar5") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (} "}"))) (labeled_statement "LAB_002c72d8:\n  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" (statement_identifier "LAB_002c72d8") (: ":") (expression_statement "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1)" (identifier "FUN_002f3360") (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" (( "(") (identifier "bVar6") (, ",") (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar1") () ")"))) (; ";"))) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" (identifier "auVar7") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar7;" (return "return") (identifier "auVar7") (; ";")) (} "}")))

/* DWARF original name: _M_emplace_unique<std::pair<long int, gold::Cie*> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_bool>
   _M_emplace_unique<std::pair<long_int,_gold::Cie*>_>(_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::Cie*>_>_>
   * this, pair<long_int,_gold::Cie*> * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>,var_3> __thiscall
std::
_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::var_1*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>var_2>
::_M_emplace_unique<std::pair<long_int,_gold::var_1*>var_2>
          (_Rb_tree<long_unsigned_int,_std::pair<long_unsigned_int_const,_gold::var_1*>,_std::_Select1st<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>,_std::less<long_unsigned_int>,_std::allocator<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>var_2>
           *this,pair<long_int,_gold::var_1*> *__args_0)

{
  type_1 *var_8;
  size_t *psVar2;
  type_2 var_10;
  type_2 var_13;
  type_3 *var_7;
  type_3 *var_11;
  bool bVar7;
  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>,var_3> var_4;
  pair<std::_Rb_tree_iterator<std::pair<long_unsigned_int_const,_gold::var_1*>var_2>,var_3> var_5;
  
  var_8 = &(this->_M_impl).super__Rb_tree_header;
  var_4.first._M_node = (type_4)var_6(0x30);
  var_10 = __args_0->first;
  *(type_2 *)(var_4.first._M_node + 1) = var_10;
  var_7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  var_4.first._M_node[1]._M_parent = (type_4)__args_0->second;
  if (var_7 == (type_3 *)0x0) {
    var_11 = &var_8->_M_header;
    if ((type_1 *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == var_8) {
      bVar7 = true;
      goto LAB_002c72d8;
    }
LAB_002c7307:
    var_7 = (type_3 *)var_9(var_11);
    if ((var_10 <= *(type_2 *)(var_7 + 1)) || (var_7 = var_11, var_11 == (type_3 *)0x0))
    {
LAB_002c7318:
      var_12(var_4.first._M_node);
      var_5._8_8_ = 0;
      var_5.first._M_node = var_7;
      return var_5;
    }
  }
  else {
    do {
      var_11 = var_7;
      var_13 = *(type_2 *)(var_11 + 1);
      if (var_10 < var_13) {
        var_7 = var_11->_M_left;
      }
      else {
        var_7 = var_11->_M_right;
      }
    } while (var_7 != (type_4)0x0);
    if (var_10 < var_13) {
      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != var_11) goto LAB_002c7307;
    }
    else {
      var_7 = var_11;
      if (var_10 <= var_13) goto LAB_002c7318;
    }
  }
  bVar7 = true;
  if (var_8 != (type_1 *)var_11) {
    bVar7 = var_10 < *(type_2 *)(var_11 + 1);
  }
LAB_002c72d8:
  var_14(bVar7,var_4.first._M_node,var_11,&var_8->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  var_4._8_8_ = 1;
  return var_4;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (function_definition type: (type_identifier) (ERROR (type_descriptor type: (sized_type_specifier type: (type_identifier))) (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (identifier) field: (field_identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (return_statement (identifier)))))

undefined1  [16] MASKED(long param_1,ulong *param_2)

{
  ulong uVar1;
  ulong uVar2;
  ulong uVar3;
  ulong uVar4;
  ulong uVar5;
  bool bVar6;
  undefined1 auVar7 [16];
  undefined1 auVar8 [16];
  
  uVar1 = param_1 + 8;
  auVar7._0_8_ = FUN_002f0690(0x30);
  uVar2 = *param_2;
  *(ulong *)(auVar7._0_8_ + 0x20) = uVar2;
  uVar4 = *(ulong *)(param_1 + 0x10);
  *(ulong *)(auVar7._0_8_ + 0x28) = param_2[1];
  if (uVar4 == 0) {
    uVar5 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar6 = true;
      goto LAB_002c72d8;
    }
LAB_002c7307:
    uVar4 = thunk_FUN_002f31c0(uVar5);
    if ((uVar2 <= *(ulong *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {
LAB_002c7318:
      FUN_002f1e60(auVar7._0_8_);
      auVar8._8_8_ = 0;
      auVar8._0_8_ = uVar4;
      return auVar8;
    }
  }
  else {
    do {
      uVar5 = uVar4;
      uVar3 = *(ulong *)(uVar5 + 0x20);
      if (uVar2 < uVar3) {
        uVar4 = *(ulong *)(uVar5 + 0x10);
      }
      else {
        uVar4 = *(ulong *)(uVar5 + 0x18);
      }
    } while (uVar4 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_002c7307;
    }
    else {
      uVar4 = uVar5;
      if (uVar2 <= uVar3) goto LAB_002c7318;
    }
  }
  bVar6 = true;
  if (uVar1 != uVar5) {
    bVar6 = uVar2 < *(ulong *)(uVar5 + 0x20);
  }
LAB_002c72d8:
  FUN_002f3360(bVar6,auVar7._0_8_,uVar5,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar7._8_8_ = 1;
  return auVar7;
}

