
/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, gold::Sized_relobj_file<32,
   false>::Kept_comdat_section> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>
   _M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>
   * this, pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section> * __args#0)
    */

pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>
 __thiscall
std::
_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>
::
_M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>
          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>
           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>
                 *__args_0)

{
  _Rb_tree_header *p_Var1;
  size_t *psVar2;
  _Rb_tree_color _Var3;
  _Rb_tree_color _Var4;
  _Base_ptr p_Var5;
  _Base_ptr p_Var6;
  _Rb_tree_node_base *p_Var7;
  _Rb_tree_node_base *p_Var8;
  bool bVar9;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>
  pVar10;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>
  pVar11;
  
  p_Var1 = &(this->_M_impl).super__Rb_tree_header;
  pVar10.first._M_node = (_Base_ptr)operator_new(0x40);
  _Var3 = __args_0->first;
  p_Var5 = (_Base_ptr)(__args_0->second).sh_size;
  p_Var6 = (_Base_ptr)(__args_0->second).kept_section;
  pVar10.first._M_node[1]._M_color = _Var3;
  pVar10.first._M_node[1]._M_parent = p_Var5;
  pVar10.first._M_node[1]._M_left = p_Var6;
  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  pVar10.first._M_node[1]._M_right = *(_Base_ptr *)&(__args_0->second).symndx;
  if (p_Var7 == (_Rb_tree_node_base *)0x0) {
    p_Var8 = &p_Var1->_M_header;
    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {
      bVar9 = true;
      goto LAB_001cf497;
    }
LAB_001cf4c7:
    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);
    if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {
LAB_001cf4d8:
      operator_delete(pVar10.first._M_node);
      pVar11._8_8_ = 0;
      pVar11.first._M_node = p_Var7;
      return pVar11;
    }
  }
  else {
    do {
      p_Var8 = p_Var7;
      _Var4 = p_Var8[1]._M_color;
      if (_Var3 < _Var4) {
        p_Var7 = p_Var8->_M_left;
      }
      else {
        p_Var7 = p_Var8->_M_right;
      }
    } while (p_Var7 != (_Base_ptr)0x0);
    if (_Var3 < _Var4) {
      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;
    }
    else {
      p_Var7 = p_Var8;
      if (_Var3 <= _Var4) goto LAB_001cf4d8;
    }
  }
  bVar9 = true;
  if (p_Var1 != (_Rb_tree_header *)p_Var8) {
    bVar9 = _Var3 < p_Var8[1]._M_color;
  }
LAB_001cf497:
  _Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  pVar10._8_8_ = 1;
  return pVar10;
}



undefined1  [16] FUN_001cf410(long param_1,uint *param_2)

{
  ulong uVar1;
  uint uVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  ulong uVar7;
  bool bVar8;
  undefined1 auVar9 [16];
  undefined1 auVar10 [16];
  
  uVar1 = param_1 + 8;
  auVar9._0_8_ = FUN_002a11b0(0x40);
  uVar2 = *param_2;
  uVar4 = *(undefined8 *)(param_2 + 2);
  uVar5 = *(undefined8 *)(param_2 + 4);
  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;
  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;
  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;
  uVar6 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);
  if (uVar6 == 0) {
    uVar7 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar8 = true;
      goto LAB_001cf497;
    }
LAB_001cf4c7:
    uVar6 = thunk_FUN_002a3ce0(uVar7);
    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {
LAB_001cf4d8:
      FUN_002a2980(auVar9._0_8_);
      auVar10._8_8_ = 0;
      auVar10._0_8_ = uVar6;
      return auVar10;
    }
  }
  else {
    do {
      uVar7 = uVar6;
      uVar3 = *(uint *)(uVar7 + 0x20);
      if (uVar2 < uVar3) {
        uVar6 = *(ulong *)(uVar7 + 0x10);
      }
      else {
        uVar6 = *(ulong *)(uVar7 + 0x18);
      }
    } while (uVar6 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;
    }
    else {
      uVar6 = uVar7;
      if (uVar2 <= uVar3) goto LAB_001cf4d8;
    }
  }
  bVar8 = true;
  if (uVar1 != uVar7) {
    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);
  }
LAB_001cf497:
  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar9._8_8_ = 1;
  return auVar9;
}


PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x40
PUSH RBP
LEA R14,[R12 + 0x8]
PUSH RBX
MOV RBX,RSI
CALL 0x002a11b0
MOV R13D,dword ptr [RBX]
MOVDQU XMM0,xmmword ptr [RBX + 0x8]
MOV RBP,RAX
MOV dword ptr [RAX + 0x20],R13D
MOVUPS xmmword ptr [RAX + 0x28],XMM0
MOV RAX,qword ptr [RBX + 0x18]
MOV RBX,qword ptr [R12 + 0x10]
MOV qword ptr [RBP + 0x38],RAX
TEST RBX,RBX
JNZ 0x001cf471
JMP 0x001cf510
MOV RAX,qword ptr [RBX + 0x10]
MOV EDX,0x1
TEST RAX,RAX
JZ 0x001cf484
MOV RBX,RAX
MOV ECX,dword ptr [RBX + 0x20]
CMP R13D,ECX
JC 0x001cf460
MOV RAX,qword ptr [RBX + 0x18]
XOR EDX,EDX
TEST RAX,RAX
JNZ 0x001cf46e
TEST DL,DL
JNZ 0x001cf4c0
CMP R13D,ECX
JBE 0x001cf4d8
MOV EDI,0x1
CMP R14,RBX
JNZ 0x001cf4ff
MOV RDX,RBX
MOV RCX,R14
MOV RSI,RBP
CALL 0x002a3e80
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 0x001cf48d
MOV RDI,RBX
CALL 0x002a3da0
CMP R13D,dword ptr [RAX + 0x20]
JA 0x001cf4f0
MOV RBX,RAX
MOV RDI,RBP
CALL 0x002a2980
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
TEST RBX,RBX
JZ 0x001cf4d8
MOV EDI,0x1
CMP R14,RBX
JZ 0x001cf497
XOR EDI,EDI
CMP R13D,dword ptr [RBX + 0x20]
SETC DIL
JMP 0x001cf497
MOV RBX,R14
CMP qword ptr [R12 + 0x18],R14
JNZ 0x001cf4c7
MOV EDI,0x1
JMP 0x001cf497
(translation_unit "undefined1  [16] FUN_001cf410(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_001cf410(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" type_identifier (ERROR "(long param_1,uint" ( (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  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [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 "auVar9._0_8_ = FUN_002a11b0(0x40);" (assignment_expression "auVar9._0_8_ = FUN_002a11b0(0x40)" (field_expression "auVar9._0_8_" identifier . field_identifier) = (call_expression "FUN_002a11b0(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar4 = *(undefined8 *)(param_2 + 2);" (assignment_expression "uVar4 = *(undefined8 *)(param_2 + 2)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 2)" * (cast_expression "(undefined8 *)(param_2 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined8 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 4)" * (cast_expression "(undefined8 *)(param_2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(auVar9._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar9._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar9._0_8_ + 0x20)" * (cast_expression "(uint *)(auVar9._0_8_ + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x20)" ( (binary_expression "auVar9._0_8_ + 0x20" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x28)" ( (binary_expression "auVar9._0_8_ + 0x28" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x30)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x30)" ( (binary_expression "auVar9._0_8_ + 0x30" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(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 "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6)" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x38)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x38)" ( (binary_expression "auVar9._0_8_ + 0x38" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_2 + 6)" * (cast_expression "(undefined8 *)(param_2 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }" { (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\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      bVar8 = true;\n      goto LAB_001cf497;\n    }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (goto_statement "goto LAB_001cf497;" goto statement_identifier ;) })) (labeled_statement "LAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_002a3ce0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002a3ce0(uVar7)" identifier = (call_expression "thunk_FUN_002a3ce0(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" if (parenthesized_expression "((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0))" ( (binary_expression "(uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar6 + 0x20))" ( (binary_expression "uVar2 <= *(uint *)(uVar6 + 0x20)" identifier <= (pointer_expression "*(uint *)(uVar6 + 0x20)" * (cast_expression "(uint *)(uVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar6 = uVar7, uVar7 == 0)" ( (comma_expression "uVar6 = uVar7, uVar7 == 0" (assignment_expression "uVar6 = uVar7" identifier = identifier) , (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" { (labeled_statement "LAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);" statement_identifier : (expression_statement "FUN_002a2980(auVar9._0_8_);" (call_expression "FUN_002a2980(auVar9._0_8_)" identifier (argument_list "(auVar9._0_8_)" ( (field_expression "auVar9._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar10;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" { (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = *(uint *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar7 + 0x20)" identifier = (pointer_expression "*(uint *)(uVar7 + 0x20)" * (cast_expression "(uint *)(uVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" else (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar7)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar7" (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_001cf4c7;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" else (compound_statement "{\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" { (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_001cf4d8;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_001cf4d8;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) (compound_statement "{\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" { (expression_statement "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);" (assignment_expression "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20)" identifier = (binary_expression "uVar2 < *(uint *)(uVar7 + 0x20)" identifier < (pointer_expression "*(uint *)(uVar7 + 0x20)" * (cast_expression "(uint *)(uVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" statement_identifier : (expression_statement "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" (call_expression "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1)" identifier (argument_list "(bVar8,auVar9._0_8_,uVar7,uVar1)" ( identifier , (field_expression "auVar9._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 "auVar9._8_8_ = 1;" (assignment_expression "auVar9._8_8_ = 1" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar9;" return identifier ;) })))
(translation_unit "/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, gold::Sized_relobj_file<32,\n   false>::Kept_comdat_section> >\n   DWARF original prototype:\n   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n   _M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n   * this, pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section> * __args#0)\n    */\n\npair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Rb_tree_color _Var3;\n  _Rb_tree_color _Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  _Rb_tree_node_base *p_Var8;\n  bool bVar9;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar10;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar11;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar10.first._M_node = (_Base_ptr)operator_new(0x40);\n  _Var3 = __args_0->first;\n  p_Var5 = (_Base_ptr)(__args_0->second).sh_size;\n  p_Var6 = (_Base_ptr)(__args_0->second).kept_section;\n  pVar10.first._M_node[1]._M_color = _Var3;\n  pVar10.first._M_node[1]._M_parent = p_Var5;\n  pVar10.first._M_node[1]._M_left = p_Var6;\n  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar10.first._M_node[1]._M_right = *(_Base_ptr *)&(__args_0->second).symndx;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar9 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {\nLAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }\n  }\n  else {\n    do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }\n  }\n  bVar9 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var8) {\n    bVar9 = _Var3 < p_Var8[1]._M_color;\n  }\nLAB_001cf497:\n  _Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar10._8_8_ = 1;\n  return pVar10;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const," (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<unsigned_int_const" identifier < identifier) ,) (labeled_statement "_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n __thiscall" statement_identifier : (ERROR ":" :) (expression_statement "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n __thiscall" (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n __thiscall" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>,_bool>\n __thiscall" (binary_expression "_false>::Kept_comdat_section>_>,_bool" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > (ERROR "," ,) identifier) > identifier)) ;)) (labeled_statement "std::\n_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)" statement_identifier (ERROR "::\n_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_gold:" : : (comma_expression "_Rb_tree<unsigned_int,_std" (binary_expression "_Rb_tree<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>,_std" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>,_std" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>,_std" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<unsigned_int>,_std" (binary_expression "less<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique<std" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique<std" (binary_expression "_false>::Kept_comdat_section>_>_>\n::\n_M_emplace_unique" (binary_expression "_false>::Kept_comdat_section>_>_" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) : : (comma_expression "pair<unsigned_int,_gold" (binary_expression "pair<unsigned_int" identifier < identifier) , identifier) :) : (expression_statement "Sized_relobj_file<32,_false>::Kept_comdat_section>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)" (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0)" ( (ERROR "_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold::" (comma_expression "_Rb_tree<unsigned_int,_std" (binary_expression "_Rb_tree<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>,_std" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>,_std" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > (ERROR "," ,) identifier)) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>,_std" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "less<unsigned_int>,_std" (binary_expression "less<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (comma_expression "_false>::Kept_comdat_section>_>_>\n           *this,pair<unsigned_int,_gold" (binary_expression "_false>::Kept_comdat_section>_>_>\n           *this" (binary_expression "_false>::Kept_comdat_section>_>_" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > identifier) > (pointer_expression "*this" * identifier)) , (comma_expression "pair<unsigned_int,_gold" (binary_expression "pair<unsigned_int" identifier < identifier) , identifier))) : :) (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>\n                 *__args_0" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>\n                 *__args_0" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > (pointer_expression "*__args_0" * identifier))) )))) ;)) (compound_statement "{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Rb_tree_color _Var3;\n  _Rb_tree_color _Var4;\n  _Base_ptr p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  _Rb_tree_node_base *p_Var8;\n  bool bVar9;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar10;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar11;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar10.first._M_node = (_Base_ptr)operator_new(0x40);\n  _Var3 = __args_0->first;\n  p_Var5 = (_Base_ptr)(__args_0->second).sh_size;\n  p_Var6 = (_Base_ptr)(__args_0->second).kept_section;\n  pVar10.first._M_node[1]._M_color = _Var3;\n  pVar10.first._M_node[1]._M_parent = p_Var5;\n  pVar10.first._M_node[1]._M_left = p_Var6;\n  p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar10.first._M_node[1]._M_right = *(_Base_ptr *)&(__args_0->second).symndx;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar9 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {\nLAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }\n  }\n  else {\n    do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }\n  }\n  bVar9 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var8) {\n    bVar9 = _Var3 < p_Var8[1]._M_color;\n  }\nLAB_001cf497:\n  _Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar10._8_8_ = 1;\n  return pVar10;\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 "_Rb_tree_color _Var3;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var4;" type_identifier identifier ;) (declaration "_Base_ptr p_Var5;" type_identifier identifier ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : :) (expression_statement "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar10;" (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar10" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>,_bool>\n  pVar10" (binary_expression "_false>::Kept_comdat_section>_>,_bool" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > identifier) > (ERROR "," ,) identifier) > identifier)) ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_gold" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : :) (expression_statement "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar11;" (comma_expression "Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>\n  pVar11" (binary_expression "Sized_relobj_file<32" identifier < number_literal) , (binary_expression "_false>::Kept_comdat_section>_>,_bool>\n  pVar11" (binary_expression "_false>::Kept_comdat_section>_>,_bool" (binary_expression "_false>::Kept_comdat_section>_" (binary_expression "_false>::Kept_comdat_section" identifier > (ERROR "::" : :) identifier) > 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 "pVar10.first._M_node = (_Base_ptr)operator_new(0x40);" (assignment_expression "pVar10.first._M_node = (_Base_ptr)operator_new(0x40)" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x40)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "_Var3 = __args_0->first;" (assignment_expression "_Var3 = __args_0->first" identifier = (field_expression "__args_0->first" identifier -> field_identifier)) ;) (expression_statement "p_Var5 = (_Base_ptr)(__args_0->second).sh_size;" (assignment_expression "p_Var5 = (_Base_ptr)(__args_0->second).sh_size" identifier = (field_expression "(_Base_ptr)(__args_0->second).sh_size" (call_expression "(_Base_ptr)(__args_0->second)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "p_Var6 = (_Base_ptr)(__args_0->second).kept_section;" (assignment_expression "p_Var6 = (_Base_ptr)(__args_0->second).kept_section" identifier = (field_expression "(_Base_ptr)(__args_0->second).kept_section" (call_expression "(_Base_ptr)(__args_0->second)" (parenthesized_expression "(_Base_ptr)" ( identifier )) (argument_list "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "pVar10.first._M_node[1]._M_color = _Var3;" (assignment_expression "pVar10.first._M_node[1]._M_color = _Var3" (field_expression "pVar10.first._M_node[1]._M_color" (subscript_expression "pVar10.first._M_node[1]" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pVar10.first._M_node[1]._M_parent = p_Var5;" (assignment_expression "pVar10.first._M_node[1]._M_parent = p_Var5" (field_expression "pVar10.first._M_node[1]._M_parent" (subscript_expression "pVar10.first._M_node[1]" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pVar10.first._M_node[1]._M_left = p_Var6;" (assignment_expression "pVar10.first._M_node[1]._M_left = p_Var6" (field_expression "pVar10.first._M_node[1]._M_left" (subscript_expression "pVar10.first._M_node[1]" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "p_Var7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var7 = (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 "pVar10.first._M_node[1]._M_right = *(_Base_ptr *)&(__args_0->second).symndx;" (assignment_expression "pVar10.first._M_node[1]._M_right = *(_Base_ptr *)&(__args_0->second).symndx" (field_expression "pVar10.first._M_node[1]._M_right" (subscript_expression "pVar10.first._M_node[1]" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (pointer_expression "*(_Base_ptr *)&(__args_0->second).symndx" * (cast_expression "(_Base_ptr *)&(__args_0->second).symndx" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__args_0->second).symndx" & (field_expression "(__args_0->second).symndx" (parenthesized_expression "(__args_0->second)" ( (field_expression "__args_0->second" identifier -> field_identifier) )) . field_identifier))))) ;) (if_statement "if (p_Var7 == (_Rb_tree_node_base *)0x0) {\n    p_Var8 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar9 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {\nLAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }\n  }\n  else {\n    do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }\n  }" if (parenthesized_expression "(p_Var7 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var7 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var8 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar9 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);\n    if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {\nLAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }\n  }" { (expression_statement "p_Var8 = &p_Var1->_M_header;" (assignment_expression "p_Var8 = &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      bVar9 = true;\n      goto LAB_001cf497;\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      bVar9 = true;\n      goto LAB_001cf497;\n    }" { (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;) (goto_statement "goto LAB_001cf497;" goto statement_identifier ;) })) (labeled_statement "LAB_001cf4c7:\n    p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);" statement_identifier : (expression_statement "p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8);" (assignment_expression "p_Var7 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var8)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var8)" identifier (argument_list "(p_Var8)" ( identifier ))))) ;)) (if_statement "if ((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)) {\nLAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }" if (parenthesized_expression "((_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0))" ( (binary_expression "(_Var3 <= p_Var7[1]._M_color) || (p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)" (parenthesized_expression "(_Var3 <= p_Var7[1]._M_color)" ( (binary_expression "_Var3 <= p_Var7[1]._M_color" identifier <= (field_expression "p_Var7[1]._M_color" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier)) )) || (parenthesized_expression "(p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0)" ( (comma_expression "p_Var7 = p_Var8, p_Var8 == (_Rb_tree_node_base *)0x0" (assignment_expression "p_Var7 = p_Var8" identifier = identifier) , (binary_expression "p_Var8 == (_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_001cf4d8:\n      operator_delete(pVar10.first._M_node);\n      pVar11._8_8_ = 0;\n      pVar11.first._M_node = p_Var7;\n      return pVar11;\n    }" { (labeled_statement "LAB_001cf4d8:\n      operator_delete(pVar10.first._M_node);" statement_identifier : (expression_statement "operator_delete(pVar10.first._M_node);" (call_expression "operator_delete(pVar10.first._M_node)" identifier (argument_list "(pVar10.first._M_node)" ( (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) ))) ;)) (expression_statement "pVar11._8_8_ = 0;" (assignment_expression "pVar11._8_8_ = 0" (field_expression "pVar11._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar11.first._M_node = p_Var7;" (assignment_expression "pVar11.first._M_node = p_Var7" (field_expression "pVar11.first._M_node" (field_expression "pVar11.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar11;" return identifier ;) })) }) (else_clause "else {\n    do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }\n  }" else (compound_statement "{\n    do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }\n  }" { (do_statement "do {\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    } while (p_Var7 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var8 = p_Var7;\n      _Var4 = p_Var8[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }\n    }" { (expression_statement "p_Var8 = p_Var7;" (assignment_expression "p_Var8 = p_Var7" identifier = identifier) ;) (expression_statement "_Var4 = p_Var8[1]._M_color;" (assignment_expression "_Var4 = p_Var8[1]._M_color" identifier = (field_expression "p_Var8[1]._M_color" (subscript_expression "p_Var8[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (_Var3 < _Var4) {\n        p_Var7 = p_Var8->_M_left;\n      }\n      else {\n        p_Var7 = p_Var8->_M_right;\n      }" if (parenthesized_expression "(_Var3 < _Var4)" ( (binary_expression "_Var3 < _Var4" identifier < identifier) )) (compound_statement "{\n        p_Var7 = p_Var8->_M_left;\n      }" { (expression_statement "p_Var7 = p_Var8->_M_left;" (assignment_expression "p_Var7 = p_Var8->_M_left" identifier = (field_expression "p_Var8->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else {\n        p_Var7 = p_Var8->_M_right;\n      }" else (compound_statement "{\n        p_Var7 = p_Var8->_M_right;\n      }" { (expression_statement "p_Var7 = p_Var8->_M_right;" (assignment_expression "p_Var7 = p_Var8->_M_right" identifier = (field_expression "p_Var8->_M_right" identifier -> field_identifier)) ;) }))) }) while (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }\n    else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }" if (parenthesized_expression "(_Var3 < _Var4)" ( (binary_expression "_Var3 < _Var4" identifier < identifier) )) (compound_statement "{\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;\n    }" { (if_statement "if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8) goto LAB_001cf4c7;" if (parenthesized_expression "((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8)" ( (binary_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var8" (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_001cf4c7;" goto statement_identifier ;)) }) (else_clause "else {\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }" else (compound_statement "{\n      p_Var7 = p_Var8;\n      if (_Var3 <= _Var4) goto LAB_001cf4d8;\n    }" { (expression_statement "p_Var7 = p_Var8;" (assignment_expression "p_Var7 = p_Var8" identifier = identifier) ;) (if_statement "if (_Var3 <= _Var4) goto LAB_001cf4d8;" if (parenthesized_expression "(_Var3 <= _Var4)" ( (binary_expression "_Var3 <= _Var4" identifier <= identifier) )) (goto_statement "goto LAB_001cf4d8;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;) (if_statement "if (p_Var1 != (_Rb_tree_header *)p_Var8) {\n    bVar9 = _Var3 < p_Var8[1]._M_color;\n  }" if (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var8)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var8" identifier != (cast_expression "(_Rb_tree_header *)p_Var8" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    bVar9 = _Var3 < p_Var8[1]._M_color;\n  }" { (expression_statement "bVar9 = _Var3 < p_Var8[1]._M_color;" (assignment_expression "bVar9 = _Var3 < p_Var8[1]._M_color" identifier = (binary_expression "_Var3 < p_Var8[1]._M_color" identifier < (field_expression "p_Var8[1]._M_color" (subscript_expression "p_Var8[1]" identifier [ number_literal ]) . field_identifier))) ;) })) (labeled_statement "LAB_001cf497:\n  _Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header);" statement_identifier : (expression_statement "_Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header)" identifier (argument_list "(bVar9,pVar10.first._M_node,p_Var8,&p_Var1->_M_header)" ( identifier , (field_expression "pVar10.first._M_node" (field_expression "pVar10.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 "pVar10._8_8_ = 1;" (assignment_expression "pVar10._8_8_ = 1" (field_expression "pVar10._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar10;" return identifier ;) }))
(translation_unit "undefined1  [16] FUN_001cf410(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_001cf410(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" type_identifier (ERROR "(long param_1,uint" ( (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  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar10 [16];" type_identifier (array_declarator "auVar10 [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 "auVar9._0_8_ = FUN_002a11b0(0x40);" (assignment_expression "auVar9._0_8_ = FUN_002a11b0(0x40)" (field_expression "auVar9._0_8_" identifier . field_identifier) = (call_expression "FUN_002a11b0(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar4 = *(undefined8 *)(param_2 + 2);" (assignment_expression "uVar4 = *(undefined8 *)(param_2 + 2)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 2)" * (cast_expression "(undefined8 *)(param_2 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined8 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 4)" * (cast_expression "(undefined8 *)(param_2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(auVar9._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar9._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar9._0_8_ + 0x20)" * (cast_expression "(uint *)(auVar9._0_8_ + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x20)" ( (binary_expression "auVar9._0_8_ + 0x20" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x28)" ( (binary_expression "auVar9._0_8_ + 0x28" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x30)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x30)" ( (binary_expression "auVar9._0_8_ + 0x30" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(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 "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6)" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x38)" * (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar9._0_8_ + 0x38)" ( (binary_expression "auVar9._0_8_ + 0x38" (field_expression "auVar9._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_2 + 6)" * (cast_expression "(undefined8 *)(param_2 + 6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }" { (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\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      bVar8 = true;\n      goto LAB_001cf497;\n    }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (goto_statement "goto LAB_001cf497;" goto statement_identifier ;) })) (labeled_statement "LAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_002a3ce0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002a3ce0(uVar7)" identifier = (call_expression "thunk_FUN_002a3ce0(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" if (parenthesized_expression "((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0))" ( (binary_expression "(uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar6 + 0x20))" ( (binary_expression "uVar2 <= *(uint *)(uVar6 + 0x20)" identifier <= (pointer_expression "*(uint *)(uVar6 + 0x20)" * (cast_expression "(uint *)(uVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar6 = uVar7, uVar7 == 0)" ( (comma_expression "uVar6 = uVar7, uVar7 == 0" (assignment_expression "uVar6 = uVar7" identifier = identifier) , (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" { (labeled_statement "LAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);" statement_identifier : (expression_statement "FUN_002a2980(auVar9._0_8_);" (call_expression "FUN_002a2980(auVar9._0_8_)" identifier (argument_list "(auVar9._0_8_)" ( (field_expression "auVar9._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar10;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" { (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = *(uint *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar7 + 0x20)" identifier = (pointer_expression "*(uint *)(uVar7 + 0x20)" * (cast_expression "(uint *)(uVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" else (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar7)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar7" (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_001cf4c7;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" else (compound_statement "{\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" { (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_001cf4d8;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_001cf4d8;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) (compound_statement "{\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" { (expression_statement "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);" (assignment_expression "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20)" identifier = (binary_expression "uVar2 < *(uint *)(uVar7 + 0x20)" identifier < (pointer_expression "*(uint *)(uVar7 + 0x20)" * (cast_expression "(uint *)(uVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" statement_identifier : (expression_statement "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" (call_expression "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1)" identifier (argument_list "(bVar8,auVar9._0_8_,uVar7,uVar1)" ( identifier , (field_expression "auVar9._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 "auVar9._8_8_ = 1;" (assignment_expression "auVar9._8_8_ = 1" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar9;" 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 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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 (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 (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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_001cf410(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" (type_identifier "FUN_001cf410") (ERROR "(long param_1,uint" (( "(") (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (identifier "uint")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (ERROR ")" () ")")) (compound_statement "{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  bool bVar8;\n  undefined1 auVar9 [16];\n  undefined1 auVar10 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar9._0_8_ = FUN_002a11b0(0x40);\n  uVar2 = *param_2;\n  uVar4 = *(undefined8 *)(param_2 + 2);\n  uVar5 = *(undefined8 *)(param_2 + 4);\n  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;\n  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;\n  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;\n  uVar6 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);\n  if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }\n  bVar8 = true;\n  if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }\nLAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar9._8_8_ = 1;\n  return auVar9;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "undefined1 auVar9 [16];" (type_identifier "undefined1") (array_declarator "auVar9 [16]" (identifier "auVar9") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar10 [16];" (type_identifier "undefined1") (array_declarator "auVar10 [16]" (identifier "auVar10") ([ "[") (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 "auVar9._0_8_ = FUN_002a11b0(0x40);" (assignment_expression "auVar9._0_8_ = FUN_002a11b0(0x40)" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_002a11b0(0x40)" (identifier "FUN_002a11b0") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar4 = *(undefined8 *)(param_2 + 2);" (assignment_expression "uVar4 = *(undefined8 *)(param_2 + 2)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 2)" (* "*") (cast_expression "(undefined8 *)(param_2 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined8 *)(param_2 + 4);" (assignment_expression "uVar5 = *(undefined8 *)(param_2 + 4)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 4)" (* "*") (cast_expression "(undefined8 *)(param_2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(uint *)(auVar9._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar9._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar9._0_8_ + 0x20)" (* "*") (cast_expression "(uint *)(auVar9._0_8_ + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar9._0_8_ + 0x20)" (( "(") (binary_expression "auVar9._0_8_ + 0x20" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x28)" (* "*") (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar9._0_8_ + 0x28)" (( "(") (binary_expression "auVar9._0_8_ + 0x28" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x30)" (* "*") (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar9._0_8_ + 0x30)" (( "(") (binary_expression "auVar9._0_8_ + 0x30" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" (identifier "uVar6") (= "=") (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 "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);" (assignment_expression "*(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6)" (pointer_expression "*(undefined8 *)(auVar9._0_8_ + 0x38)" (* "*") (cast_expression "(undefined8 *)(auVar9._0_8_ + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar9._0_8_ + 0x38)" (( "(") (binary_expression "auVar9._0_8_ + 0x38" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x38")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_2 + 6)" (* "*") (cast_expression "(undefined8 *)(param_2 + 6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if (uVar6 == 0) {\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }\n  else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\n    }\nLAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);\n    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }\n  }" ({ "{") (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" (identifier "uVar7") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar8 = true;\n      goto LAB_001cf497;\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      bVar8 = true;\n      goto LAB_001cf497;\n    }" ({ "{") (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" (identifier "bVar8") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_001cf497;" (goto "goto") (statement_identifier "LAB_001cf497") (; ";")) (} "}"))) (labeled_statement "LAB_001cf4c7:\n    uVar6 = thunk_FUN_002a3ce0(uVar7);" (statement_identifier "LAB_001cf4c7") (: ":") (expression_statement "uVar6 = thunk_FUN_002a3ce0(uVar7);" (assignment_expression "uVar6 = thunk_FUN_002a3ce0(uVar7)" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_002a3ce0(uVar7)" (identifier "thunk_FUN_002a3ce0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";"))) (if_statement "if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" (if "if") (parenthesized_expression "((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0))" (( "(") (binary_expression "(uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar6 + 0x20))" (( "(") (binary_expression "uVar2 <= *(uint *)(uVar6 + 0x20)" (identifier "uVar2") (<= "<=") (pointer_expression "*(uint *)(uVar6 + 0x20)" (* "*") (cast_expression "(uint *)(uVar6 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x20)" (( "(") (binary_expression "uVar6 + 0x20" (identifier "uVar6") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(uVar6 = uVar7, uVar7 == 0)" (( "(") (comma_expression "uVar6 = uVar7, uVar7 == 0" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (, ",") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);\n      auVar10._8_8_ = 0;\n      auVar10._0_8_ = uVar6;\n      return auVar10;\n    }" ({ "{") (labeled_statement "LAB_001cf4d8:\n      FUN_002a2980(auVar9._0_8_);" (statement_identifier "LAB_001cf4d8") (: ":") (expression_statement "FUN_002a2980(auVar9._0_8_);" (call_expression "FUN_002a2980(auVar9._0_8_)" (identifier "FUN_002a2980") (argument_list "(auVar9._0_8_)" (( "(") (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) () ")"))) (; ";"))) (expression_statement "auVar10._8_8_ = 0;" (assignment_expression "auVar10._8_8_ = 0" (field_expression "auVar10._8_8_" (identifier "auVar10") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar10._0_8_ = uVar6;" (assignment_expression "auVar10._0_8_ = uVar6" (field_expression "auVar10._0_8_" (identifier "auVar10") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return auVar10;" (return "return") (identifier "auVar10") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }\n  }" ({ "{") (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    } while (uVar6 != 0);" (do "do") (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(uint *)(uVar7 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n    }" ({ "{") (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar3 = *(uint *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar7 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(uVar7 + 0x20)" (* "*") (cast_expression "(uint *)(uVar7 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x20)" (( "(") (binary_expression "uVar7 + 0x20" (identifier "uVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (uVar2 < uVar3) {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" ({ "{") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x10)" (( "(") (binary_expression "uVar7 + 0x10" (identifier "uVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" (else "else") (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" ({ "{") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x18)" (( "(") (binary_expression "uVar7 + 0x18" (identifier "uVar7") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }\n    else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;\n    }" ({ "{") (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar7)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) != uVar7" (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 "uVar7")) () ")")) (goto_statement "goto LAB_001cf4c7;" (goto "goto") (statement_identifier "LAB_001cf4c7") (; ";"))) (} "}")) (else_clause "else {\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" (else "else") (compound_statement "{\n      uVar6 = uVar7;\n      if (uVar2 <= uVar3) goto LAB_001cf4d8;\n    }" ({ "{") (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar2 <= uVar3) goto LAB_001cf4d8;" (if "if") (parenthesized_expression "(uVar2 <= uVar3)" (( "(") (binary_expression "uVar2 <= uVar3" (identifier "uVar2") (<= "<=") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_001cf4d8;" (goto "goto") (statement_identifier "LAB_001cf4d8") (; ";"))) (} "}")))) (} "}")))) (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" (identifier "bVar8") (= "=") (true "true")) (; ";")) (if_statement "if (uVar1 != uVar7) {\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" (if "if") (parenthesized_expression "(uVar1 != uVar7)" (( "(") (binary_expression "uVar1 != uVar7" (identifier "uVar1") (!= "!=") (identifier "uVar7")) () ")")) (compound_statement "{\n    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);\n  }" ({ "{") (expression_statement "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);" (assignment_expression "bVar8 = uVar2 < *(uint *)(uVar7 + 0x20)" (identifier "bVar8") (= "=") (binary_expression "uVar2 < *(uint *)(uVar7 + 0x20)" (identifier "uVar2") (< "<") (pointer_expression "*(uint *)(uVar7 + 0x20)" (* "*") (cast_expression "(uint *)(uVar7 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x20)" (( "(") (binary_expression "uVar7 + 0x20" (identifier "uVar7") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (} "}"))) (labeled_statement "LAB_001cf497:\n  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" (statement_identifier "LAB_001cf497") (: ":") (expression_statement "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);" (call_expression "FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1)" (identifier "FUN_002a3e80") (argument_list "(bVar8,auVar9._0_8_,uVar7,uVar1)" (( "(") (identifier "bVar8") (, ",") (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar7") (, ",") (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 "auVar9._8_8_ = 1;" (assignment_expression "auVar9._8_8_ = 1" (field_expression "auVar9._8_8_" (identifier "auVar9") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar9;" (return "return") (identifier "auVar9") (; ";")) (} "}")))

/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, gold::Sized_relobj_file<32,
   false>::Kept_comdat_section> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_bool>
   _M_emplace_unique<std::pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>,_std::_Select1st<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section>_>_>
   * this, pair<unsigned_int,_gold::Sized_relobj_file<32,_false>::Kept_comdat_section> * __args#0)
    */

pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>,var_5>
 var_6
std::
_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>,_std::_Select1st<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>var_4>
::
_M_emplace_unique<std::pair<unsigned_int,_gold::var_1<32,var_2>::var_3>var_4>
          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>,_std::_Select1st<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>var_4>
           *this,pair<unsigned_int,_gold::var_1<32,var_2>::var_3>
                 *__args_0)

{
  type_1 *var_11;
  size_t *psVar2;
  type_2 var_13;
  type_2 var_16;
  type_3 p_Var5;
  type_3 p_Var6;
  type_4 *var_10;
  type_4 *var_14;
  bool bVar9;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>,var_5>
  var_7;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_gold::var_1<32,var_2>::var_3>var_4>,var_5>
  var_8;
  
  var_11 = &(this->_M_impl).super__Rb_tree_header;
  var_7.first._M_node = (type_3)var_9(0x40);
  var_13 = __args_0->first;
  p_Var5 = (type_3)(__args_0->second).sh_size;
  p_Var6 = (type_3)(__args_0->second).kept_section;
  var_7.first._M_node[1]._M_color = var_13;
  var_7.first._M_node[1]._M_parent = p_Var5;
  var_7.first._M_node[1]._M_left = p_Var6;
  var_10 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  var_7.first._M_node[1]._M_right = *(type_3 *)&(__args_0->second).symndx;
  if (var_10 == (type_4 *)0x0) {
    var_14 = &var_11->_M_header;
    if ((type_1 *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == var_11) {
      bVar9 = true;
      goto LAB_001cf497;
    }
LAB_001cf4c7:
    var_10 = (type_4 *)var_12(var_14);
    if ((var_13 <= var_10[1]._M_color) || (var_10 = var_14, var_14 == (type_4 *)0x0)) {
LAB_001cf4d8:
      var_15(var_7.first._M_node);
      var_8._8_8_ = 0;
      var_8.first._M_node = var_10;
      return var_8;
    }
  }
  else {
    do {
      var_14 = var_10;
      var_16 = var_14[1]._M_color;
      if (var_13 < var_16) {
        var_10 = var_14->_M_left;
      }
      else {
        var_10 = var_14->_M_right;
      }
    } while (var_10 != (type_3)0x0);
    if (var_13 < var_16) {
      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != var_14) goto LAB_001cf4c7;
    }
    else {
      var_10 = var_14;
      if (var_13 <= var_16) goto LAB_001cf4d8;
    }
  }
  bVar9 = true;
  if (var_11 != (type_1 *)var_14) {
    bVar9 = var_13 < var_14[1]._M_color;
  }
LAB_001cf497:
  var_17(bVar9,var_7.first._M_node,var_14,&var_11->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  var_7._8_8_ = 1;
  return var_7;
}


(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: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (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: (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: (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: (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,uint *param_2)

{
  ulong uVar1;
  uint uVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  ulong uVar7;
  bool bVar8;
  undefined1 auVar9 [16];
  undefined1 auVar10 [16];
  
  uVar1 = param_1 + 8;
  auVar9._0_8_ = FUN_002a11b0(0x40);
  uVar2 = *param_2;
  uVar4 = *(undefined8 *)(param_2 + 2);
  uVar5 = *(undefined8 *)(param_2 + 4);
  *(uint *)(auVar9._0_8_ + 0x20) = uVar2;
  *(undefined8 *)(auVar9._0_8_ + 0x28) = uVar4;
  *(undefined8 *)(auVar9._0_8_ + 0x30) = uVar5;
  uVar6 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar9._0_8_ + 0x38) = *(undefined8 *)(param_2 + 6);
  if (uVar6 == 0) {
    uVar7 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar8 = true;
      goto LAB_001cf497;
    }
LAB_001cf4c7:
    uVar6 = thunk_FUN_002a3ce0(uVar7);
    if ((uVar2 <= *(uint *)(uVar6 + 0x20)) || (uVar6 = uVar7, uVar7 == 0)) {
LAB_001cf4d8:
      FUN_002a2980(auVar9._0_8_);
      auVar10._8_8_ = 0;
      auVar10._0_8_ = uVar6;
      return auVar10;
    }
  }
  else {
    do {
      uVar7 = uVar6;
      uVar3 = *(uint *)(uVar7 + 0x20);
      if (uVar2 < uVar3) {
        uVar6 = *(ulong *)(uVar7 + 0x10);
      }
      else {
        uVar6 = *(ulong *)(uVar7 + 0x18);
      }
    } while (uVar6 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar7) goto LAB_001cf4c7;
    }
    else {
      uVar6 = uVar7;
      if (uVar2 <= uVar3) goto LAB_001cf4d8;
    }
  }
  bVar8 = true;
  if (uVar1 != uVar7) {
    bVar8 = uVar2 < *(uint *)(uVar7 + 0x20);
  }
LAB_001cf497:
  FUN_002a3e80(bVar8,auVar9._0_8_,uVar7,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar9._8_8_ = 1;
  return auVar9;
}

