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

pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>
 __thiscall
std::
_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>
::_M_emplace_unique<std::pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>
          (_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>
           *this,pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*> *__args_0)

{
  _Rb_tree_header *p_Var1;
  size_t *psVar2;
  _Base_ptr p_Var3;
  _Rb_tree_node_base *p_Var4;
  _Rb_tree_node_base *p_Var5;
  long lVar6;
  long lVar7;
  bool bVar8;
  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>
  pVar9;
  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>
  pVar10;
  
  p_Var1 = &(this->_M_impl).super__Rb_tree_header;
  pVar9.first._M_node = (_Base_ptr)operator_new(0x38);
  p_Var3 = *(_Base_ptr *)&(__args_0->first).second;
  *(long *)(pVar9.first._M_node + 1) = (__args_0->first).first;
  pVar9.first._M_node[1]._M_parent = p_Var3;
  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second;
  if (p_Var4 == (_Rb_tree_node_base *)0x0) {
    p_Var5 = &p_Var1->_M_header;
    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      bVar8 = true;
      goto LAB_0017c4be;
    }
    lVar7 = *(long *)(pVar9.first._M_node + 1);
LAB_0017c4ef:
    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);
    lVar6 = *(long *)(p_Var4 + 1);
    if (lVar7 <= lVar6) {
LAB_0017c506:
      if ((lVar6 != lVar7) ||
         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {
LAB_0017c548:
        operator_delete(pVar9.first._M_node);
        pVar10._8_8_ = 0;
        pVar10.first._M_node = p_Var4;
        return pVar10;
      }
      if (p_Var5 == (_Rb_tree_node_base *)0x0) {
        p_Var4 = (_Rb_tree_node_base *)0x0;
        goto LAB_0017c548;
      }
    }
  }
  else {
    lVar7 = *(long *)(pVar9.first._M_node + 1);
    do {
      p_Var5 = p_Var4;
      lVar6 = *(long *)(p_Var5 + 1);
      if ((lVar7 < lVar6) ||
         ((lVar7 == lVar6 &&
          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {
        p_Var4 = p_Var5->_M_left;
        bVar8 = true;
      }
      else {
        p_Var4 = p_Var5->_M_right;
        bVar8 = false;
      }
    } while (p_Var4 != (_Base_ptr)0x0);
    if (bVar8) {
      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;
    }
    else {
      p_Var4 = p_Var5;
      if (lVar7 <= lVar6) goto LAB_0017c506;
    }
  }
  bVar8 = true;
  if ((_Rb_tree_header *)p_Var5 != p_Var1) {
    bVar8 = true;
    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {
      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;
    }
  }
LAB_0017c4be:
  _Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  pVar9._8_8_ = 1;
  return pVar9;
}



undefined1  [16] FUN_0017c430(long param_1,undefined8 *param_2)

{
  ulong uVar1;
  undefined8 uVar2;
  ulong uVar3;
  ulong uVar4;
  long lVar5;
  long lVar6;
  bool bVar7;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  
  uVar1 = param_1 + 8;
  auVar8._0_8_ = FUN_002d94a0(0x38);
  uVar2 = param_2[1];
  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;
  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;
  uVar3 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];
  if (uVar3 == 0) {
    uVar4 = uVar1;
    if (uVar1 == *(ulong *)(param_1 + 0x18)) {
      bVar7 = true;
      goto LAB_0017c4be;
    }
    lVar6 = *(long *)(auVar8._0_8_ + 0x20);
LAB_0017c4ef:
    uVar3 = thunk_FUN_002dbfd0(uVar4);
    lVar5 = *(long *)(uVar3 + 0x20);
    if (lVar6 <= lVar5) {
LAB_0017c506:
      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {
LAB_0017c548:
        FUN_002dac70(auVar8._0_8_);
        auVar9._8_8_ = 0;
        auVar9._0_8_ = uVar3;
        return auVar9;
      }
      if (uVar4 == 0) {
        uVar3 = 0;
        goto LAB_0017c548;
      }
    }
  }
  else {
    lVar6 = *(long *)(auVar8._0_8_ + 0x20);
    do {
      uVar4 = uVar3;
      lVar5 = *(long *)(uVar4 + 0x20);
      if ((lVar6 < lVar5) ||
         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {
        uVar3 = *(ulong *)(uVar4 + 0x10);
        bVar7 = true;
      }
      else {
        uVar3 = *(ulong *)(uVar4 + 0x18);
        bVar7 = false;
      }
    } while (uVar3 != 0);
    if (bVar7) {
      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;
    }
    else {
      uVar3 = uVar4;
      if (lVar6 <= lVar5) goto LAB_0017c506;
    }
  }
  bVar7 = true;
  if (uVar4 != uVar1) {
    bVar7 = true;
    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {
      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);
    }
  }
LAB_0017c4be:
  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar8._8_8_ = 1;
  return auVar8;
}


PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x38
PUSH RBP
LEA R14,[R12 + 0x8]
PUSH RBX
MOV RBX,RSI
CALL 0x002d94a0
MOVDQU XMM0,xmmword ptr [RBX]
MOV RBP,RAX
MOVUPS xmmword ptr [RAX + 0x20],XMM0
MOV RAX,qword ptr [RBX + 0x10]
MOV RBX,qword ptr [R12 + 0x10]
MOV qword ptr [RBP + 0x30],RAX
TEST RBX,RBX
JZ 0x0017c560
MOV R13,qword ptr [RBP + 0x20]
JMP 0x0017c490
JNZ 0x0017c482
MOV EAX,dword ptr [RBX + 0x28]
CMP dword ptr [RBP + 0x28],EAX
JC 0x0017c499
MOV RAX,qword ptr [RBX + 0x18]
XOR ESI,ESI
TEST RAX,RAX
JZ 0x0017c4a7
MOV RBX,RAX
MOV RDX,qword ptr [RBX + 0x20]
CMP R13,RDX
JGE 0x0017c478
MOV RAX,qword ptr [RBX + 0x10]
MOV ESI,0x1
TEST RAX,RAX
JNZ 0x0017c48d
TEST SIL,SIL
JNZ 0x0017c4e8
MOV RCX,RBX
CMP R13,RDX
JLE 0x0017c506
MOV EDI,0x1
CMP RBX,R14
JNZ 0x0017c528
MOV RDX,RBX
MOV RCX,R14
MOV RSI,RBP
CALL 0x002dc170
POP RBX
MOV RAX,RBP
ADD qword ptr [R12 + 0x28],0x1
POP RBP
MOV EDX,0x1
POP R12
POP R13
POP R14
RET
CMP RBX,qword ptr [R12 + 0x18]
JZ 0x0017c4b4
MOV RDI,RBX
CALL 0x002dc090
MOV RDX,qword ptr [RAX + 0x20]
CMP R13,RDX
JG 0x0017c4b4
MOV RCX,RBX
MOV RBX,RAX
CMP RDX,R13
JNZ 0x0017c548
MOV EAX,dword ptr [RBP + 0x28]
CMP dword ptr [RBX + 0x28],EAX
JNC 0x0017c548
TEST RCX,RCX
JZ 0x0017c546
MOV RBX,RCX
MOV EDI,0x1
CMP RBX,R14
JZ 0x0017c4be
NOP dword ptr [RAX]
CMP R13,qword ptr [RBX + 0x20]
JL 0x0017c4be
MOV EDI,0x0
JNZ 0x0017c4be
XOR EDI,EDI
MOV EAX,dword ptr [RBX + 0x28]
CMP dword ptr [RBP + 0x28],EAX
SETC DIL
JMP 0x0017c4be
XOR EBX,EBX
MOV RDI,RBP
CALL 0x002dac70
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RBX,R14
CMP R14,qword ptr [R12 + 0x18]
JZ 0x0017c573
MOV R13,qword ptr [RBP + 0x20]
JMP 0x0017c4ef
MOV EDI,0x1
JMP 0x0017c4be
(translation_unit "undefined1  [16] FUN_0017c430(long param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  long lVar5;\n  long lVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar8._0_8_ = FUN_002d94a0(0x38);\n  uVar2 = param_2[1];\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;\n  uVar3 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];\n  if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }\n  bVar7 = true;\n  if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }\nLAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_0017c430(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  long lVar5;\n  long lVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar8._0_8_ = FUN_002d94a0(0x38);\n  uVar2 = param_2[1];\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;\n  uVar3 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];\n  if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }\n  bVar7 = true;\n  if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }\nLAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [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 "auVar8._0_8_ = FUN_002d94a0(0x38);" (assignment_expression "auVar8._0_8_ = FUN_002d94a0(0x38)" (field_expression "auVar8._0_8_" identifier . field_identifier) = (call_expression "FUN_002d94a0(0x38)" identifier (argument_list "(0x38)" ( number_literal )))) ;) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(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 *)(auVar8._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x30)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x30)" ( (binary_expression "auVar8._0_8_ + 0x30" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }" { (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" if (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" identifier == (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) ))))) )) (compound_statement "{\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (goto_statement "goto LAB_0017c4be;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" identifier = (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" * (cast_expression "(long *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);" statement_identifier : (expression_statement "uVar3 = thunk_FUN_002dbfd0(uVar4);" (assignment_expression "uVar3 = thunk_FUN_002dbfd0(uVar4)" identifier = (call_expression "thunk_FUN_002dbfd0(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;)) (expression_statement "lVar5 = *(long *)(uVar3 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar3 + 0x20)" identifier = (pointer_expression "*(long *)(uVar3 + 0x20)" * (cast_expression "(long *)(uVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x20)" ( (binary_expression "uVar3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" if (parenthesized_expression "(lVar6 <= lVar5)" ( (binary_expression "lVar6 <= lVar5" identifier <= identifier) )) (compound_statement "{\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" { (labeled_statement "LAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" statement_identifier : (if_statement "if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" if (parenthesized_expression "((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)))" ( (binary_expression "(lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" (parenthesized_expression "(lVar5 != lVar6)" ( (binary_expression "lVar5 != lVar6" identifier != identifier) )) || (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" ( (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) <= (pointer_expression "*(uint *)(uVar3 + 0x28)" * (cast_expression "(uint *)(uVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28)" ( (binary_expression "uVar3 + 0x28" identifier + number_literal) ))))) ))) )) (compound_statement "{\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" { (labeled_statement "LAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);" statement_identifier : (expression_statement "FUN_002dac70(auVar8._0_8_);" (call_expression "FUN_002dac70(auVar8._0_8_)" identifier (argument_list "(auVar8._0_8_)" ( (field_expression "auVar8._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar9._0_8_ = uVar3;" (assignment_expression "auVar9._0_8_ = uVar3" (field_expression "auVar9._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar9;" return identifier ;) }))) (if_statement "if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017c548;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" else (compound_statement "{\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" { (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" identifier = (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" * (cast_expression "(long *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);" do (compound_statement "{\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    }" { (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) (expression_statement "lVar5 = *(long *)(uVar4 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar4 + 0x20)" identifier = (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" if (parenthesized_expression "((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))))" ( (binary_expression "(lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" (parenthesized_expression "(lVar6 < lVar5)" ( (binary_expression "lVar6 < lVar5" identifier < identifier) )) || (parenthesized_expression "((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" ( (parenthesized_expression "(lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))" ( (binary_expression "lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" (binary_expression "lVar6 == lVar5" identifier == identifier) && (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" ( (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) < (pointer_expression "*(uint *)(uVar4 + 0x28)" * (cast_expression "(uint *)(uVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x28)" ( (binary_expression "uVar4 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar4 + 0x10)" * (cast_expression "(ulong *)(uVar4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x10)" ( (binary_expression "uVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) }) (else_clause "else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" else (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar4 + 0x18)" * (cast_expression "(ulong *)(uVar4 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x18)" ( (binary_expression "uVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (if_statement "if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }" { (if_statement "if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;" if (parenthesized_expression "(uVar4 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar4 != *(ulong *)(param_1 + 0x18)" identifier != (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) ))))) )) (goto_statement "goto LAB_0017c4ef;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" else (compound_statement "{\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" { (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (lVar6 <= lVar5) goto LAB_0017c506;" if (parenthesized_expression "(lVar6 <= lVar5)" ( (binary_expression "lVar6 <= lVar5" identifier <= identifier) )) (goto_statement "goto LAB_0017c506;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" if (parenthesized_expression "(uVar4 != uVar1)" ( (binary_expression "uVar4 != uVar1" identifier != identifier) )) (compound_statement "{\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" if (parenthesized_expression "((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)))" ( (binary_expression "(*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" (parenthesized_expression "(*(long *)(uVar4 + 0x20) <= lVar6)" ( (binary_expression "*(long *)(uVar4 + 0x20) <= lVar6" (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) )))) <= identifier) )) && (parenthesized_expression "(bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" ( (comma_expression "bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)" (assignment_expression "bVar7 = false" identifier = false) , (binary_expression "lVar6 == *(long *)(uVar4 + 0x20)" identifier == (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" { (expression_statement "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);" (assignment_expression "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" identifier = (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) < (pointer_expression "*(uint *)(uVar4 + 0x28)" * (cast_expression "(uint *)(uVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x28)" ( (binary_expression "uVar4 + 0x28" identifier + number_literal) )))))) ;) })) })) (labeled_statement "LAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" statement_identifier : (expression_statement "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" (call_expression "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1)" identifier (argument_list "(bVar7,auVar8._0_8_,uVar4,uVar1)" ( identifier , (field_expression "auVar8._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 "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit "/* DWARF original name: _M_emplace_unique<std::pair<std::pair<long int, unsigned int>,\n   gold::File_read::View*> >\n   DWARF original prototype:\n   pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n   _M_emplace_unique<std::pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>(_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n   * this, pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*> * __args#0) */\n\npair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n::_M_emplace_unique<std::pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>\n          (_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n           *this,pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*> *__args_0)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Base_ptr p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  long lVar6;\n  long lVar7;\n  bool bVar8;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar9;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar10;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar9.first._M_node = (_Base_ptr)operator_new(0x38);\n  p_Var3 = *(_Base_ptr *)&(__args_0->first).second;\n  *(long *)(pVar9.first._M_node + 1) = (__args_0->first).first;\n  pVar9.first._M_node[1]._M_parent = p_Var3;\n  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\nLAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    lVar6 = *(long *)(p_Var4 + 1);\n    if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }\n  bVar8 = true;\n  if ((_Rb_tree_header *)p_Var5 != p_Var1) {\n    bVar8 = true;\n    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }\n  }\nLAB_0017c4be:\n  _Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar9._8_8_ = 1;\n  return pVar9;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier) : : (binary_expression "File_read::View*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<std" (binary_expression "File_read::View*>_>,_bool>\n __thiscall" (binary_expression "File_read::View*>_>,_bool" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > (ERROR "," ,) identifier) > identifier) (ERROR "std::\n_Rb_tree" identifier : : identifier) < identifier) : : (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier) : :) (labeled_statement "File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n::_M_emplace_unique<std::pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>\n          (_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n           *this,pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*> *__args_0)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Base_ptr p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  long lVar6;\n  long lVar7;\n  bool bVar8;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar9;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar10;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar9.first._M_node = (_Base_ptr)operator_new(0x38);\n  p_Var3 = *(_Base_ptr *)&(__args_0->first).second;\n  *(long *)(pVar9.first._M_node + 1) = (__args_0->first).first;\n  pVar9.first._M_node[1]._M_parent = p_Var3;\n  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\nLAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    lVar6 = *(long *)(p_Var4 + 1);\n    if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }\n  bVar8 = true;\n  if ((_Rb_tree_header *)p_Var5 != p_Var1) {\n    bVar8 = true;\n    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }\n  }\nLAB_0017c4be:\n  _Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar9._8_8_ = 1;\n  return pVar9;\n}" statement_identifier (ERROR "::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n::_M_emplace_unique<std::pair<std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>\n          (_Rb_tree<std::pair<long_int,_unsigned_int>,_std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n           *this,pair<std::pair<long_int,_unsigned_int>,_gold:" : : (comma_expression "View*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_>,_std" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "less<std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>_>,_std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>_>,_std" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_>_" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > identifier) > : : (binary_expression "_M_emplace_unique<std" identifier < identifier) : : (binary_expression "pair<std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > ( (binary_expression "_Rb_tree<std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (comma_expression "File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_std" identifier (ERROR "::View*>,_std::_Select1st<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>" : : (comma_expression "View*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) >) , identifier) : : (binary_expression "less<std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>_>,_std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>_>,_std" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (comma_expression "File_read::View*>_>_>\n           *this,pair<std" (binary_expression "File_read::View*>_>_>\n           *this" (binary_expression "File_read::View*>_>_" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > identifier) > (pointer_expression "*this" * identifier)) , (binary_expression "pair<std" identifier < identifier)) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) :) : (ERROR "File_read::View*> *__args_0)" (binary_expression "File_read::View*> *__args_0" identifier (ERROR "::View*" : : identifier *) > (pointer_expression "*__args_0" * identifier)) )) (compound_statement "{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Base_ptr p_Var3;\n  _Rb_tree_node_base *p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  long lVar6;\n  long lVar7;\n  bool bVar8;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar9;\n  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::File_read::View*>_>,_bool>\n  pVar10;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar9.first._M_node = (_Base_ptr)operator_new(0x38);\n  p_Var3 = *(_Base_ptr *)&(__args_0->first).second;\n  *(long *)(pVar9.first._M_node + 1) = (__args_0->first).first;\n  pVar9.first._M_node[1]._M_parent = p_Var3;\n  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\nLAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    lVar6 = *(long *)(p_Var4 + 1);\n    if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }\n  bVar8 = true;\n  if ((_Rb_tree_header *)p_Var5 != p_Var1) {\n    bVar8 = true;\n    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }\n  }\nLAB_0017c4be:\n  _Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar9._8_8_ = 1;\n  return pVar9;\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 "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : :) (expression_statement "File_read::View*>_>,_bool>\n  pVar9;" (binary_expression "File_read::View*>_>,_bool>\n  pVar9" (binary_expression "File_read::View*>_>,_bool" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > (ERROR "," ,) identifier) > identifier) ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_int,_unsigned_int>,_gold" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : :) (expression_statement "File_read::View*>_>,_bool>\n  pVar10;" (binary_expression "File_read::View*>_>,_bool>\n  pVar10" (binary_expression "File_read::View*>_>,_bool" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : 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 "pVar9.first._M_node = (_Base_ptr)operator_new(0x38);" (assignment_expression "pVar9.first._M_node = (_Base_ptr)operator_new(0x38)" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x38)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "p_Var3 = *(_Base_ptr *)&(__args_0->first).second;" (assignment_expression "p_Var3 = *(_Base_ptr *)&(__args_0->first).second" identifier = (pointer_expression "*(_Base_ptr *)&(__args_0->first).second" * (cast_expression "(_Base_ptr *)&(__args_0->first).second" ( (type_descriptor "_Base_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__args_0->first).second" & (field_expression "(__args_0->first).second" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "*(long *)(pVar9.first._M_node + 1) = (__args_0->first).first;" (assignment_expression "*(long *)(pVar9.first._M_node + 1) = (__args_0->first).first" (pointer_expression "*(long *)(pVar9.first._M_node + 1)" * (cast_expression "(long *)(pVar9.first._M_node + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar9.first._M_node + 1)" ( (binary_expression "pVar9.first._M_node + 1" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) + number_literal) )))) = (field_expression "(__args_0->first).first" (parenthesized_expression "(__args_0->first)" ( (field_expression "__args_0->first" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pVar9.first._M_node[1]._M_parent = p_Var3;" (assignment_expression "pVar9.first._M_node[1]._M_parent = p_Var3" (field_expression "pVar9.first._M_node[1]._M_parent" (subscript_expression "pVar9.first._M_node[1]" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var4 = (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 "pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second;" (assignment_expression "pVar9.first._M_node[1]._M_left = (_Base_ptr)__args_0->second" (field_expression "pVar9.first._M_node[1]._M_left" (subscript_expression "pVar9.first._M_node[1]" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)__args_0->second" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__args_0->second" identifier -> field_identifier))) ;) (if_statement "if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\nLAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    lVar6 = *(long *)(p_Var4 + 1);\n    if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }" if (parenthesized_expression "(p_Var4 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var4 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\nLAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    lVar6 = *(long *)(p_Var4 + 1);\n    if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }\n  }" { (expression_statement "p_Var5 = &p_Var1->_M_header;" (assignment_expression "p_Var5 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }" if (parenthesized_expression "(p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left" identifier == (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))) )) (compound_statement "{\n      bVar8 = true;\n      goto LAB_0017c4be;\n    }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (goto_statement "goto LAB_0017c4be;" goto statement_identifier ;) })) (expression_statement "lVar7 = *(long *)(pVar9.first._M_node + 1);" (assignment_expression "lVar7 = *(long *)(pVar9.first._M_node + 1)" identifier = (pointer_expression "*(long *)(pVar9.first._M_node + 1)" * (cast_expression "(long *)(pVar9.first._M_node + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar9.first._M_node + 1)" ( (binary_expression "pVar9.first._M_node + 1" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0017c4ef:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);" statement_identifier : (expression_statement "p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);" (assignment_expression "p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var5)" identifier (argument_list "(p_Var5)" ( identifier ))))) ;)) (expression_statement "lVar6 = *(long *)(p_Var4 + 1);" (assignment_expression "lVar6 = *(long *)(p_Var4 + 1)" identifier = (pointer_expression "*(long *)(p_Var4 + 1)" * (cast_expression "(long *)(p_Var4 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var4 + 1)" ( (binary_expression "p_Var4 + 1" identifier + number_literal) ))))) ;) (if_statement "if (lVar7 <= lVar6) {\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }" if (parenthesized_expression "(lVar7 <= lVar6)" ( (binary_expression "lVar7 <= lVar6" identifier <= identifier) )) (compound_statement "{\nLAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }\n      if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }\n    }" { (labeled_statement "LAB_0017c506:\n      if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }" statement_identifier : (if_statement "if ((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)) {\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }" if (parenthesized_expression "((lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent))" ( (binary_expression "(lVar6 != lVar7) ||\n         (*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)" (parenthesized_expression "(lVar6 != lVar7)" ( (binary_expression "lVar6 != lVar7" identifier != identifier) )) || (parenthesized_expression "(*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent)" ( (binary_expression "*(uint *)&pVar9.first._M_node[1]._M_parent <= *(uint *)&p_Var4[1]._M_parent" (pointer_expression "*(uint *)&pVar9.first._M_node[1]._M_parent" * (cast_expression "(uint *)&pVar9.first._M_node[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVar9.first._M_node[1]._M_parent" & (field_expression "pVar9.first._M_node[1]._M_parent" (subscript_expression "pVar9.first._M_node[1]" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier)))) <= (pointer_expression "*(uint *)&p_Var4[1]._M_parent" * (cast_expression "(uint *)&p_Var4[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var4[1]._M_parent" & (field_expression "p_Var4[1]._M_parent" (subscript_expression "p_Var4[1]" identifier [ number_literal ]) . field_identifier))))) ))) )) (compound_statement "{\nLAB_0017c548:\n        operator_delete(pVar9.first._M_node);\n        pVar10._8_8_ = 0;\n        pVar10.first._M_node = p_Var4;\n        return pVar10;\n      }" { (labeled_statement "LAB_0017c548:\n        operator_delete(pVar9.first._M_node);" statement_identifier : (expression_statement "operator_delete(pVar9.first._M_node);" (call_expression "operator_delete(pVar9.first._M_node)" identifier (argument_list "(pVar9.first._M_node)" ( (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) ))) ;)) (expression_statement "pVar10._8_8_ = 0;" (assignment_expression "pVar10._8_8_ = 0" (field_expression "pVar10._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar10.first._M_node = p_Var4;" (assignment_expression "pVar10.first._M_node = p_Var4" (field_expression "pVar10.first._M_node" (field_expression "pVar10.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar10;" return identifier ;) }))) (if_statement "if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }" if (parenthesized_expression "(p_Var5 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var5 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var4 = (_Rb_tree_node_base *)0x0;\n        goto LAB_0017c548;\n      }" { (expression_statement "p_Var4 = (_Rb_tree_node_base *)0x0;" (assignment_expression "p_Var4 = (_Rb_tree_node_base *)0x0" identifier = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0017c548;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }" else (compound_statement "{\n    lVar7 = *(long *)(pVar9.first._M_node + 1);\n    do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }\n  }" { (expression_statement "lVar7 = *(long *)(pVar9.first._M_node + 1);" (assignment_expression "lVar7 = *(long *)(pVar9.first._M_node + 1)" identifier = (pointer_expression "*(long *)(pVar9.first._M_node + 1)" * (cast_expression "(long *)(pVar9.first._M_node + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pVar9.first._M_node + 1)" ( (binary_expression "pVar9.first._M_node + 1" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var5 = p_Var4;\n      lVar6 = *(long *)(p_Var5 + 1);\n      if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }\n    }" { (expression_statement "p_Var5 = p_Var4;" (assignment_expression "p_Var5 = p_Var4" identifier = identifier) ;) (expression_statement "lVar6 = *(long *)(p_Var5 + 1);" (assignment_expression "lVar6 = *(long *)(p_Var5 + 1)" identifier = (pointer_expression "*(long *)(p_Var5 + 1)" * (cast_expression "(long *)(p_Var5 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))) {\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }" if (parenthesized_expression "((lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent))))" ( (binary_expression "(lVar7 < lVar6) ||\n         ((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))" (parenthesized_expression "(lVar7 < lVar6)" ( (binary_expression "lVar7 < lVar6" identifier < identifier) )) || (parenthesized_expression "((lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)))" ( (parenthesized_expression "(lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent))" ( (binary_expression "lVar7 == lVar6 &&\n          (*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)" (binary_expression "lVar7 == lVar6" identifier == identifier) && (parenthesized_expression "(*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent)" ( (binary_expression "*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent" (pointer_expression "*(uint *)&pVar9.first._M_node[1]._M_parent" * (cast_expression "(uint *)&pVar9.first._M_node[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVar9.first._M_node[1]._M_parent" & (field_expression "pVar9.first._M_node[1]._M_parent" (subscript_expression "pVar9.first._M_node[1]" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier)))) < (pointer_expression "*(uint *)&p_Var5[1]._M_parent" * (cast_expression "(uint *)&p_Var5[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var5[1]._M_parent" & (field_expression "p_Var5[1]._M_parent" (subscript_expression "p_Var5[1]" identifier [ number_literal ]) . field_identifier))))) ))) )) ))) )) (compound_statement "{\n        p_Var4 = p_Var5->_M_left;\n        bVar8 = true;\n      }" { (expression_statement "p_Var4 = p_Var5->_M_left;" (assignment_expression "p_Var4 = p_Var5->_M_left" identifier = (field_expression "p_Var5->_M_left" identifier -> field_identifier)) ;) (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) }) (else_clause "else {\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }" else (compound_statement "{\n        p_Var4 = p_Var5->_M_right;\n        bVar8 = false;\n      }" { (expression_statement "p_Var4 = p_Var5->_M_right;" (assignment_expression "p_Var4 = p_Var5->_M_right" identifier = (field_expression "p_Var5->_M_right" identifier -> field_identifier)) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (bVar8) {\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }\n    else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n      if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;\n    }" { (if_statement "if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;" if (parenthesized_expression "(p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left" identifier != (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)) )) (goto_statement "goto LAB_0017c4ef;" goto statement_identifier ;)) }) (else_clause "else {\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }" else (compound_statement "{\n      p_Var4 = p_Var5;\n      if (lVar7 <= lVar6) goto LAB_0017c506;\n    }" { (expression_statement "p_Var4 = p_Var5;" (assignment_expression "p_Var4 = p_Var5" identifier = identifier) ;) (if_statement "if (lVar7 <= lVar6) goto LAB_0017c506;" if (parenthesized_expression "(lVar7 <= lVar6)" ( (binary_expression "lVar7 <= lVar6" identifier <= identifier) )) (goto_statement "goto LAB_0017c506;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (if_statement "if ((_Rb_tree_header *)p_Var5 != p_Var1) {\n    bVar8 = true;\n    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }\n  }" if (parenthesized_expression "((_Rb_tree_header *)p_Var5 != p_Var1)" ( (binary_expression "(_Rb_tree_header *)p_Var5 != p_Var1" (cast_expression "(_Rb_tree_header *)p_Var5" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) (compound_statement "{\n    bVar8 = true;\n    if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }\n  }" { (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;) (if_statement "if ((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))) {\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }" if (parenthesized_expression "((*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1)))" ( (binary_expression "(*(long *)(p_Var5 + 1) <= lVar7) && (bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))" (parenthesized_expression "(*(long *)(p_Var5 + 1) <= lVar7)" ( (binary_expression "*(long *)(p_Var5 + 1) <= lVar7" (pointer_expression "*(long *)(p_Var5 + 1)" * (cast_expression "(long *)(p_Var5 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) )))) <= identifier) )) && (parenthesized_expression "(bVar8 = false, lVar7 == *(long *)(p_Var5 + 1))" ( (comma_expression "bVar8 = false, lVar7 == *(long *)(p_Var5 + 1)" (assignment_expression "bVar8 = false" identifier = false) , (binary_expression "lVar7 == *(long *)(p_Var5 + 1)" identifier == (pointer_expression "*(long *)(p_Var5 + 1)" * (cast_expression "(long *)(p_Var5 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;\n    }" { (expression_statement "bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent;" (assignment_expression "bVar8 = *(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent" identifier = (binary_expression "*(uint *)&pVar9.first._M_node[1]._M_parent < *(uint *)&p_Var5[1]._M_parent" (pointer_expression "*(uint *)&pVar9.first._M_node[1]._M_parent" * (cast_expression "(uint *)&pVar9.first._M_node[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVar9.first._M_node[1]._M_parent" & (field_expression "pVar9.first._M_node[1]._M_parent" (subscript_expression "pVar9.first._M_node[1]" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier)))) < (pointer_expression "*(uint *)&p_Var5[1]._M_parent" * (cast_expression "(uint *)&p_Var5[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var5[1]._M_parent" & (field_expression "p_Var5[1]._M_parent" (subscript_expression "p_Var5[1]" identifier [ number_literal ]) . field_identifier)))))) ;) })) })) (labeled_statement "LAB_0017c4be:\n  _Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);" statement_identifier : (expression_statement "_Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header)" identifier (argument_list "(bVar8,pVar9.first._M_node,p_Var5,&p_Var1->_M_header)" ( identifier , (field_expression "pVar9.first._M_node" (field_expression "pVar9.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 "pVar9._8_8_ = 1;" (assignment_expression "pVar9._8_8_ = 1" (field_expression "pVar9._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar9;" return identifier ;) })))
(translation_unit "undefined1  [16] FUN_0017c430(long param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  long lVar5;\n  long lVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar8._0_8_ = FUN_002d94a0(0x38);\n  uVar2 = param_2[1];\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;\n  uVar3 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];\n  if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }\n  bVar7 = true;\n  if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }\nLAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_0017c430(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  long lVar5;\n  long lVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar8._0_8_ = FUN_002d94a0(0x38);\n  uVar2 = param_2[1];\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;\n  uVar3 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];\n  if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }\n  bVar7 = true;\n  if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }\nLAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [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 "auVar8._0_8_ = FUN_002d94a0(0x38);" (assignment_expression "auVar8._0_8_ = FUN_002d94a0(0x38)" (field_expression "auVar8._0_8_" identifier . field_identifier) = (call_expression "FUN_002d94a0(0x38)" identifier (argument_list "(0x38)" ( number_literal )))) ;) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(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 *)(auVar8._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x30)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x30)" ( (binary_expression "auVar8._0_8_ + 0x30" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }" { (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" if (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" identifier == (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) ))))) )) (compound_statement "{\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (goto_statement "goto LAB_0017c4be;" goto statement_identifier ;) })) (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" identifier = (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" * (cast_expression "(long *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);" statement_identifier : (expression_statement "uVar3 = thunk_FUN_002dbfd0(uVar4);" (assignment_expression "uVar3 = thunk_FUN_002dbfd0(uVar4)" identifier = (call_expression "thunk_FUN_002dbfd0(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;)) (expression_statement "lVar5 = *(long *)(uVar3 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar3 + 0x20)" identifier = (pointer_expression "*(long *)(uVar3 + 0x20)" * (cast_expression "(long *)(uVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x20)" ( (binary_expression "uVar3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" if (parenthesized_expression "(lVar6 <= lVar5)" ( (binary_expression "lVar6 <= lVar5" identifier <= identifier) )) (compound_statement "{\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" { (labeled_statement "LAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" statement_identifier : (if_statement "if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" if (parenthesized_expression "((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)))" ( (binary_expression "(lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" (parenthesized_expression "(lVar5 != lVar6)" ( (binary_expression "lVar5 != lVar6" identifier != identifier) )) || (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" ( (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) <= (pointer_expression "*(uint *)(uVar3 + 0x28)" * (cast_expression "(uint *)(uVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28)" ( (binary_expression "uVar3 + 0x28" identifier + number_literal) ))))) ))) )) (compound_statement "{\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" { (labeled_statement "LAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);" statement_identifier : (expression_statement "FUN_002dac70(auVar8._0_8_);" (call_expression "FUN_002dac70(auVar8._0_8_)" identifier (argument_list "(auVar8._0_8_)" ( (field_expression "auVar8._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar9._0_8_ = uVar3;" (assignment_expression "auVar9._0_8_ = uVar3" (field_expression "auVar9._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar9;" return identifier ;) }))) (if_statement "if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0017c548;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" else (compound_statement "{\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" { (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" identifier = (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" * (cast_expression "(long *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) ))))) ;) (do_statement "do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);" do (compound_statement "{\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    }" { (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) (expression_statement "lVar5 = *(long *)(uVar4 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar4 + 0x20)" identifier = (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" if (parenthesized_expression "((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))))" ( (binary_expression "(lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" (parenthesized_expression "(lVar6 < lVar5)" ( (binary_expression "lVar6 < lVar5" identifier < identifier) )) || (parenthesized_expression "((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" ( (parenthesized_expression "(lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))" ( (binary_expression "lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" (binary_expression "lVar6 == lVar5" identifier == identifier) && (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" ( (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) < (pointer_expression "*(uint *)(uVar4 + 0x28)" * (cast_expression "(uint *)(uVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x28)" ( (binary_expression "uVar4 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar4 + 0x10)" * (cast_expression "(ulong *)(uVar4 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x10)" ( (binary_expression "uVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) }) (else_clause "else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" else (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar4 + 0x18)" * (cast_expression "(ulong *)(uVar4 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x18)" ( (binary_expression "uVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (if_statement "if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }" { (if_statement "if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;" if (parenthesized_expression "(uVar4 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar4 != *(ulong *)(param_1 + 0x18)" identifier != (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) ))))) )) (goto_statement "goto LAB_0017c4ef;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" else (compound_statement "{\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" { (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (lVar6 <= lVar5) goto LAB_0017c506;" if (parenthesized_expression "(lVar6 <= lVar5)" ( (binary_expression "lVar6 <= lVar5" identifier <= identifier) )) (goto_statement "goto LAB_0017c506;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" if (parenthesized_expression "(uVar4 != uVar1)" ( (binary_expression "uVar4 != uVar1" identifier != identifier) )) (compound_statement "{\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" if (parenthesized_expression "((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)))" ( (binary_expression "(*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" (parenthesized_expression "(*(long *)(uVar4 + 0x20) <= lVar6)" ( (binary_expression "*(long *)(uVar4 + 0x20) <= lVar6" (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) )))) <= identifier) )) && (parenthesized_expression "(bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" ( (comma_expression "bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)" (assignment_expression "bVar7 = false" identifier = false) , (binary_expression "lVar6 == *(long *)(uVar4 + 0x20)" identifier == (pointer_expression "*(long *)(uVar4 + 0x20)" * (cast_expression "(long *)(uVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" { (expression_statement "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);" (assignment_expression "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" identifier = (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" * (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x28)" ( (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) < (pointer_expression "*(uint *)(uVar4 + 0x28)" * (cast_expression "(uint *)(uVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x28)" ( (binary_expression "uVar4 + 0x28" identifier + number_literal) )))))) ;) })) })) (labeled_statement "LAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" statement_identifier : (expression_statement "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" (call_expression "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1)" identifier (argument_list "(bVar7,auVar8._0_8_,uVar4,uVar1)" ( identifier , (field_expression "auVar8._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 "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (macro_type_specifier IDENT ( (ERROR (type_descriptor (sized_type_specifier long TYPE)) , (type_descriptor TYPE (abstract_pointer_declarator *))) (type_descriptor TYPE) )) ; (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 = (subscript_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 * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_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) ))))) ))) )) (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 ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression (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) ))))) ))) )) ))) )) (compound_statement { (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 = BOOL) ;) }) (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) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (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 = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_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) )))))) ;) })) })) (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") (] "]")) (; "")) (macro_type_specifier "FUN_0017c430(long param_1,undefined8 *param_2)" (identifier "FUN_0017c430") (( "(") (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*")))) (type_descriptor "param_2" (type_identifier "param_2")) () ")")) (; "") (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  long lVar5;\n  long lVar6;\n  bool bVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar8._0_8_ = FUN_002d94a0(0x38);\n  uVar2 = param_2[1];\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;\n  uVar3 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];\n  if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }\n  bVar7 = true;\n  if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }\nLAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "undefined1 auVar8 [16];" (type_identifier "undefined1") (array_declarator "auVar8 [16]" (identifier "auVar8") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar9 [16];" (type_identifier "undefined1") (array_declarator "auVar9 [16]" (identifier "auVar9") ([ "[") (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 "auVar8._0_8_ = FUN_002d94a0(0x38);" (assignment_expression "auVar8._0_8_ = FUN_002d94a0(0x38)" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_002d94a0(0x38)" (identifier "FUN_002d94a0") (argument_list "(0x38)" (( "(") (number_literal "0x38") () ")")))) (; ";")) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" (identifier "uVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" (* "*") (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x20)" (( "(") (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x28)" (* "*") (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x28)" (( "(") (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar3 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(param_1 + 0x10)" (identifier "uVar3") (= "=") (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 *)(auVar8._0_8_ + 0x30) = param_2[2];" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2]" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x30)" (* "*") (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x30)" (( "(") (binary_expression "auVar8._0_8_ + 0x30" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar3 == 0) {\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }\n  else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\nLAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);\n    lVar5 = *(long *)(uVar3 + 0x20);\n    if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" (identifier "uVar4") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" (if "if") (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" (identifier "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")) () ")"))))) () ")")) (compound_statement "{\n      bVar7 = true;\n      goto LAB_0017c4be;\n    }" ({ "{") (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" (identifier "bVar7") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_0017c4be;" (goto "goto") (statement_identifier "LAB_0017c4be") (; ";")) (} "}"))) (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" (* "*") (cast_expression "(long *)(auVar8._0_8_ + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x20)" (( "(") (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (labeled_statement "LAB_0017c4ef:\n    uVar3 = thunk_FUN_002dbfd0(uVar4);" (statement_identifier "LAB_0017c4ef") (: ":") (expression_statement "uVar3 = thunk_FUN_002dbfd0(uVar4);" (assignment_expression "uVar3 = thunk_FUN_002dbfd0(uVar4)" (identifier "uVar3") (= "=") (call_expression "thunk_FUN_002dbfd0(uVar4)" (identifier "thunk_FUN_002dbfd0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")")))) (; ";"))) (expression_statement "lVar5 = *(long *)(uVar3 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar3 + 0x20)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(uVar3 + 0x20)" (* "*") (cast_expression "(long *)(uVar3 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x20)" (( "(") (binary_expression "uVar3 + 0x20" (identifier "uVar3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (lVar6 <= lVar5) {\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" (if "if") (parenthesized_expression "(lVar6 <= lVar5)" (( "(") (binary_expression "lVar6 <= lVar5" (identifier "lVar6") (<= "<=") (identifier "lVar5")) () ")")) (compound_statement "{\nLAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }\n      if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }\n    }" ({ "{") (labeled_statement "LAB_0017c506:\n      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" (statement_identifier "LAB_0017c506") (: ":") (if_statement "if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" (if "if") (parenthesized_expression "((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)))" (( "(") (binary_expression "(lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" (parenthesized_expression "(lVar5 != lVar6)" (( "(") (binary_expression "lVar5 != lVar6" (identifier "lVar5") (!= "!=") (identifier "lVar6")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))" (( "(") (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" (* "*") (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x28)" (( "(") (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(uVar3 + 0x28)" (* "*") (cast_expression "(uint *)(uVar3 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x28)" (( "(") (binary_expression "uVar3 + 0x28" (identifier "uVar3") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) () ")")) (compound_statement "{\nLAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);\n        auVar9._8_8_ = 0;\n        auVar9._0_8_ = uVar3;\n        return auVar9;\n      }" ({ "{") (labeled_statement "LAB_0017c548:\n        FUN_002dac70(auVar8._0_8_);" (statement_identifier "LAB_0017c548") (: ":") (expression_statement "FUN_002dac70(auVar8._0_8_);" (call_expression "FUN_002dac70(auVar8._0_8_)" (identifier "FUN_002dac70") (argument_list "(auVar8._0_8_)" (( "(") (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) () ")"))) (; ";"))) (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" (identifier "auVar9") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar9._0_8_ = uVar3;" (assignment_expression "auVar9._0_8_ = uVar3" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return auVar9;" (return "return") (identifier "auVar9") (; ";")) (} "}")))) (if_statement "if (uVar4 == 0) {\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = 0;\n        goto LAB_0017c548;\n      }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0017c548;" (goto "goto") (statement_identifier "LAB_0017c548") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" (else "else") (compound_statement "{\n    lVar6 = *(long *)(auVar8._0_8_ + 0x20);\n    do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);\n    if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }\n  }" ({ "{") (expression_statement "lVar6 = *(long *)(auVar8._0_8_ + 0x20);" (assignment_expression "lVar6 = *(long *)(auVar8._0_8_ + 0x20)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(auVar8._0_8_ + 0x20)" (* "*") (cast_expression "(long *)(auVar8._0_8_ + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x20)" (( "(") (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (do_statement "do {\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    } while (uVar3 != 0);" (do "do") (compound_statement "{\n      uVar4 = uVar3;\n      lVar5 = *(long *)(uVar4 + 0x20);\n      if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }\n    }" ({ "{") (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" (identifier "uVar4") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "lVar5 = *(long *)(uVar4 + 0x20);" (assignment_expression "lVar5 = *(long *)(uVar4 + 0x20)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(uVar4 + 0x20)" (* "*") (cast_expression "(long *)(uVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x20)" (( "(") (binary_expression "uVar4 + 0x20" (identifier "uVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" (if "if") (parenthesized_expression "((lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))))" (( "(") (binary_expression "(lVar6 < lVar5) ||\n         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" (parenthesized_expression "(lVar6 < lVar5)" (( "(") (binary_expression "lVar6 < lVar5" (identifier "lVar6") (< "<") (identifier "lVar5")) () ")")) (|| "||") (parenthesized_expression "((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))" (( "(") (parenthesized_expression "(lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)))" (( "(") (binary_expression "lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" (binary_expression "lVar6 == lVar5" (identifier "lVar6") (== "==") (identifier "lVar5")) (&& "&&") (parenthesized_expression "(*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))" (( "(") (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" (* "*") (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x28)" (( "(") (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (< "<") (pointer_expression "*(uint *)(uVar4 + 0x28)" (* "*") (cast_expression "(uint *)(uVar4 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x28)" (( "(") (binary_expression "uVar4 + 0x28" (identifier "uVar4") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x10);\n        bVar7 = true;\n      }" ({ "{") (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(uVar4 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar4 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x10)" (( "(") (binary_expression "uVar4 + 0x10" (identifier "uVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" (identifier "bVar7") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" (else "else") (compound_statement "{\n        uVar3 = *(ulong *)(uVar4 + 0x18);\n        bVar7 = false;\n      }" ({ "{") (expression_statement "uVar3 = *(ulong *)(uVar4 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar4 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(uVar4 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar4 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x18)" (( "(") (binary_expression "uVar4 + 0x18" (identifier "uVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" (identifier "bVar7") (= "=") (false "false")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (bVar7) {\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }\n    else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;\n    }" ({ "{") (if_statement "if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;" (if "if") (parenthesized_expression "(uVar4 != *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar4 != *(ulong *)(param_1 + 0x18)" (identifier "uVar4") (!= "!=") (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")) () ")"))))) () ")")) (goto_statement "goto LAB_0017c4ef;" (goto "goto") (statement_identifier "LAB_0017c4ef") (; ";"))) (} "}")) (else_clause "else {\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" (else "else") (compound_statement "{\n      uVar3 = uVar4;\n      if (lVar6 <= lVar5) goto LAB_0017c506;\n    }" ({ "{") (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" (identifier "uVar3") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (lVar6 <= lVar5) goto LAB_0017c506;" (if "if") (parenthesized_expression "(lVar6 <= lVar5)" (( "(") (binary_expression "lVar6 <= lVar5" (identifier "lVar6") (<= "<=") (identifier "lVar5")) () ")")) (goto_statement "goto LAB_0017c506;" (goto "goto") (statement_identifier "LAB_0017c506") (; ";"))) (} "}")))) (} "}")))) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" (identifier "bVar7") (= "=") (true "true")) (; ";")) (if_statement "if (uVar4 != uVar1) {\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" (if "if") (parenthesized_expression "(uVar4 != uVar1)" (( "(") (binary_expression "uVar4 != uVar1" (identifier "uVar4") (!= "!=") (identifier "uVar1")) () ")")) (compound_statement "{\n    bVar7 = true;\n    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }\n  }" ({ "{") (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" (identifier "bVar7") (= "=") (true "true")) (; ";")) (if_statement "if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" (if "if") (parenthesized_expression "((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)))" (( "(") (binary_expression "(*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" (parenthesized_expression "(*(long *)(uVar4 + 0x20) <= lVar6)" (( "(") (binary_expression "*(long *)(uVar4 + 0x20) <= lVar6" (pointer_expression "*(long *)(uVar4 + 0x20)" (* "*") (cast_expression "(long *)(uVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x20)" (( "(") (binary_expression "uVar4 + 0x20" (identifier "uVar4") (+ "+") (number_literal "0x20")) () ")")))) (<= "<=") (identifier "lVar6")) () ")")) (&& "&&") (parenthesized_expression "(bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))" (( "(") (comma_expression "bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20)" (assignment_expression "bVar7 = false" (identifier "bVar7") (= "=") (false "false")) (, ",") (binary_expression "lVar6 == *(long *)(uVar4 + 0x20)" (identifier "lVar6") (== "==") (pointer_expression "*(long *)(uVar4 + 0x20)" (* "*") (cast_expression "(long *)(uVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x20)" (( "(") (binary_expression "uVar4 + 0x20" (identifier "uVar4") (+ "+") (number_literal "0x20")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);\n    }" ({ "{") (expression_statement "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);" (assignment_expression "bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (identifier "bVar7") (= "=") (binary_expression "*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28)" (pointer_expression "*(uint *)(auVar8._0_8_ + 0x28)" (* "*") (cast_expression "(uint *)(auVar8._0_8_ + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x28)" (( "(") (binary_expression "auVar8._0_8_ + 0x28" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (< "<") (pointer_expression "*(uint *)(uVar4 + 0x28)" (* "*") (cast_expression "(uint *)(uVar4 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x28)" (( "(") (binary_expression "uVar4 + 0x28" (identifier "uVar4") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0017c4be:\n  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" (statement_identifier "LAB_0017c4be") (: ":") (expression_statement "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);" (call_expression "FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1)" (identifier "FUN_002dc170") (argument_list "(bVar7,auVar8._0_8_,uVar4,uVar1)" (( "(") (identifier "bVar7") (, ",") (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar4") (, ",") (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 "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" (identifier "auVar8") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar8;" (return "return") (identifier "auVar8") (; ";")) (} "}"))

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

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

{
  type_1 *var_8;
  size_t *psVar2;
  type_2 p_Var3;
  type_3 *var_7;
  type_3 *var_13;
  long var_11;
  long var_10;
  bool bVar8;
  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::var_1::View*>var_2>,var_3>
  var_4;
  pair<std::_Rb_tree_iterator<std::pair<const_std::pair<long_int,_unsigned_int>,_gold::var_1::View*>var_2>,var_3>
  var_5;
  
  var_8 = &(this->_M_impl).super__Rb_tree_header;
  var_4.first._M_node = (type_2)var_6(0x38);
  p_Var3 = *(type_2 *)&(__args_0->first).second;
  *(long *)(var_4.first._M_node + 1) = (__args_0->first).first;
  var_4.first._M_node[1]._M_parent = p_Var3;
  var_7 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  var_4.first._M_node[1]._M_left = (type_2)__args_0->second;
  if (var_7 == (type_3 *)0x0) {
    var_13 = &var_8->_M_header;
    if (var_8 == (type_1 *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      bVar8 = true;
      goto LAB_0017c4be;
    }
    var_10 = *(long *)(var_4.first._M_node + 1);
LAB_0017c4ef:
    var_7 = (type_3 *)var_9(var_13);
    var_11 = *(long *)(var_7 + 1);
    if (var_10 <= var_11) {
LAB_0017c506:
      if ((var_11 != var_10) ||
         (*(type_4 *)&var_4.first._M_node[1]._M_parent <= *(type_4 *)&var_7[1]._M_parent)) {
LAB_0017c548:
        var_12(var_4.first._M_node);
        var_5._8_8_ = 0;
        var_5.first._M_node = var_7;
        return var_5;
      }
      if (var_13 == (type_3 *)0x0) {
        var_7 = (type_3 *)0x0;
        goto LAB_0017c548;
      }
    }
  }
  else {
    var_10 = *(long *)(var_4.first._M_node + 1);
    do {
      var_13 = var_7;
      var_11 = *(long *)(var_13 + 1);
      if ((var_10 < var_11) ||
         ((var_10 == var_11 &&
          (*(type_4 *)&var_4.first._M_node[1]._M_parent < *(type_4 *)&var_13[1]._M_parent)))) {
        var_7 = var_13->_M_left;
        bVar8 = true;
      }
      else {
        var_7 = var_13->_M_right;
        bVar8 = false;
      }
    } while (var_7 != (type_2)0x0);
    if (bVar8) {
      if (var_13 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_0017c4ef;
    }
    else {
      var_7 = var_13;
      if (var_10 <= var_11) goto LAB_0017c506;
    }
  }
  bVar8 = true;
  if ((type_1 *)var_13 != var_8) {
    bVar8 = true;
    if ((*(long *)(var_13 + 1) <= var_10) && (bVar8 = false, var_10 == *(long *)(var_13 + 1))) {
      bVar8 = *(type_4 *)&var_4.first._M_node[1]._M_parent < *(type_4 *)&var_13[1]._M_parent;
    }
  }
LAB_0017c4be:
  var_14(bVar8,var_4.first._M_node,var_13,&var_8->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  var_4._8_8_ = 1;
  return var_4;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (macro_type_specifier name: (identifier) (ERROR (type_descriptor type: (sized_type_specifier type: (type_identifier))) (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator))) type: (type_descriptor type: (type_identifier))) (MISSING ";") (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: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (subscript_expression argument: (identifier) index: (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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: (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))))))))) 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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))))) (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (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)))))))))))) 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))))))) (expression_statement (assignment_expression left: (identifier) right: (true)))) 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))))))) (expression_statement (assignment_expression left: (identifier) right: (false))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (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))))))) 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: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (identifier) right: (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)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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)))))))))))) (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,undefined8 *param_2)

{
  ulong uVar1;
  undefined8 uVar2;
  ulong uVar3;
  ulong uVar4;
  long lVar5;
  long lVar6;
  bool bVar7;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  
  uVar1 = param_1 + 8;
  auVar8._0_8_ = FUN_002d94a0(0x38);
  uVar2 = param_2[1];
  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;
  *(undefined8 *)(auVar8._0_8_ + 0x28) = uVar2;
  uVar3 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar8._0_8_ + 0x30) = param_2[2];
  if (uVar3 == 0) {
    uVar4 = uVar1;
    if (uVar1 == *(ulong *)(param_1 + 0x18)) {
      bVar7 = true;
      goto LAB_0017c4be;
    }
    lVar6 = *(long *)(auVar8._0_8_ + 0x20);
LAB_0017c4ef:
    uVar3 = thunk_FUN_002dbfd0(uVar4);
    lVar5 = *(long *)(uVar3 + 0x20);
    if (lVar6 <= lVar5) {
LAB_0017c506:
      if ((lVar5 != lVar6) || (*(uint *)(auVar8._0_8_ + 0x28) <= *(uint *)(uVar3 + 0x28))) {
LAB_0017c548:
        FUN_002dac70(auVar8._0_8_);
        auVar9._8_8_ = 0;
        auVar9._0_8_ = uVar3;
        return auVar9;
      }
      if (uVar4 == 0) {
        uVar3 = 0;
        goto LAB_0017c548;
      }
    }
  }
  else {
    lVar6 = *(long *)(auVar8._0_8_ + 0x20);
    do {
      uVar4 = uVar3;
      lVar5 = *(long *)(uVar4 + 0x20);
      if ((lVar6 < lVar5) ||
         ((lVar6 == lVar5 && (*(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28))))) {
        uVar3 = *(ulong *)(uVar4 + 0x10);
        bVar7 = true;
      }
      else {
        uVar3 = *(ulong *)(uVar4 + 0x18);
        bVar7 = false;
      }
    } while (uVar3 != 0);
    if (bVar7) {
      if (uVar4 != *(ulong *)(param_1 + 0x18)) goto LAB_0017c4ef;
    }
    else {
      uVar3 = uVar4;
      if (lVar6 <= lVar5) goto LAB_0017c506;
    }
  }
  bVar7 = true;
  if (uVar4 != uVar1) {
    bVar7 = true;
    if ((*(long *)(uVar4 + 0x20) <= lVar6) && (bVar7 = false, lVar6 == *(long *)(uVar4 + 0x20))) {
      bVar7 = *(uint *)(auVar8._0_8_ + 0x28) < *(uint *)(uVar4 + 0x28);
    }
  }
LAB_0017c4be:
  FUN_002dc170(bVar7,auVar8._0_8_,uVar4,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar8._8_8_ = 1;
  return auVar8;
}

