
/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>
   * this, key_type * __k) */

pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __thiscall
std::
_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>
::_M_get_insert_unique_pos
          (_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>
           *this,key_type *__k)

{
  undefined1 auVar1 [16];
  bool bVar2;
  _Rb_tree_node_base *p_Var3;
  Relobj *pRVar4;
  _Rb_tree_node_base *p_Var5;
  Relobj *pRVar6;
  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar7;
  
  p_Var3 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (p_Var3 == (_Rb_tree_node_base *)0x0) {
    p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_00194e64:
    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;
    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);
    pRVar6 = __k->first;
    pRVar4 = *(Relobj **)(p_Var3 + 1);
  }
  else {
    pRVar6 = __k->first;
    do {
      p_Var5 = p_Var3;
      pRVar4 = *(Relobj **)(p_Var5 + 1);
      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))
         ) {
        p_Var3 = p_Var5->_M_left;
        bVar2 = true;
      }
      else {
        p_Var3 = p_Var5->_M_right;
        bVar2 = false;
      }
    } while (p_Var3 != (_Base_ptr)0x0);
    p_Var3 = p_Var5;
    if (bVar2) goto LAB_00194e64;
  }
  if ((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))
  {
    pVar7.second = (_Rb_tree_node_base *)0x0;
    pVar7.first = p_Var3;
    return pVar7;
  }
LAB_00194e30:
  auVar1._8_8_ = 0;
  auVar1._0_8_ = p_Var5;
  return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);
}



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

{
  undefined1 auVar1 [16];
  bool bVar2;
  ulong uVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  undefined1 auVar7 [16];
  
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar5 = param_1 + 8;
LAB_00194e64:
    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;
    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);
    uVar6 = *param_2;
    uVar4 = *(ulong *)(uVar3 + 0x20);
  }
  else {
    uVar6 = *param_2;
    uVar3 = *(ulong *)(param_1 + 0x10);
    do {
      uVar5 = uVar3;
      uVar4 = *(ulong *)(uVar5 + 0x20);
      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {
        uVar3 = *(ulong *)(uVar5 + 0x10);
        bVar2 = true;
      }
      else {
        uVar3 = *(ulong *)(uVar5 + 0x18);
        bVar2 = false;
      }
    } while (uVar3 != 0);
    uVar3 = uVar5;
    if (bVar2) goto LAB_00194e64;
  }
  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {
    auVar7._8_8_ = 0;
    auVar7._0_8_ = uVar3;
    return auVar7;
  }
LAB_00194e30:
  auVar1._8_8_ = 0;
  auVar1._0_8_ = uVar5;
  return auVar1 << 0x40;
}


PUSH RBP
MOV RBP,RSI
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x10]
TEST RBX,RBX
JZ 0x00194e60
MOV R8,qword ptr [RSI]
JMP 0x00194e09
JNZ 0x00194dfa
MOV EAX,dword ptr [RBP + 0x8]
CMP dword ptr [RBX + 0x28],EAX
JA 0x00194e12
MOV RAX,qword ptr [RBX + 0x18]
XOR R9D,R9D
TEST RAX,RAX
JZ 0x00194e21
MOV RBX,RAX
MOV RCX,qword ptr [RBX + 0x20]
CMP RCX,R8
JBE 0x00194df0
MOV RAX,qword ptr [RBX + 0x10]
MOV R9D,0x1
TEST RAX,RAX
JNZ 0x00194e06
MOV RDX,RBX
TEST R9B,R9B
JNZ 0x00194e64
CMP R8,RCX
JBE 0x00194e40
XOR EAX,EAX
ADD RSP,0x8
POP RBX
POP RBP
RET
JNZ 0x00194e4a
MOV EAX,dword ptr [RBP + 0x8]
CMP dword ptr [RBX + 0x28],EAX
JC 0x00194e2e
ADD RSP,0x8
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
RET
LEA RBX,[RDI + 0x8]
XOR EAX,EAX
MOV RDX,RBX
CMP RBX,qword ptr [RDI + 0x18]
JZ 0x00194e30
MOV RDI,RBX
CALL 0x00278140
MOV RDX,RBX
MOV R8,qword ptr [RBP]
MOV RCX,qword ptr [RAX + 0x20]
MOV RBX,RAX
JMP 0x00194e29
(translation_unit "undefined1  [16] FUN_00194dd0(long param_1,ulong *param_2)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_00194dd0(long param_1,ulong *param_2)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" type_identifier (ERROR "(long param_1,ulong" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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) )))) == number_literal) )) (compound_statement "{\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }" { (expression_statement "uVar5 = param_1 + 8;" (assignment_expression "uVar5 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" statement_identifier : (if_statement "if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" if (parenthesized_expression "(uVar5 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar5 == *(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_00194e30;" goto statement_identifier ;))) (expression_statement "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);" (assignment_expression "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5)" identifier = (call_expression "thunk_FUN_00278080(uVar5,param_2,uVar5)" identifier (argument_list "(uVar5,param_2,uVar5)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar4 = *(ulong *)(uVar3 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar3 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar3 + 0x20)" * (cast_expression "(ulong *)(uVar3 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x20)" ( (binary_expression "uVar3 + 0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" else (compound_statement "{\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" { (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" identifier = (pointer_expression "*param_2" * 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) ))))) ;) (do_statement "do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);" do (compound_statement "{\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    }" { (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" if (parenthesized_expression "((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))))" ( (binary_expression "(uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) || (parenthesized_expression "((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" ( (parenthesized_expression "(uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))" ( (binary_expression "uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" (binary_expression "uVar4 == uVar6" identifier == identifier) && (parenthesized_expression "((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" ( (binary_expression "(uint)param_2[1] < *(uint *)(uVar5 + 0x28)" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) < (pointer_expression "*(uint *)(uVar5 + 0x28)" * (cast_expression "(uint *)(uVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x28)" ( (binary_expression "uVar5 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" else (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) (if_statement "if (bVar2) goto LAB_00194e64;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_00194e64;" goto statement_identifier ;)) }))) (if_statement "if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" if (parenthesized_expression "((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))))" ( (binary_expression "(uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" (parenthesized_expression "(uVar6 <= uVar4)" ( (binary_expression "uVar6 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" ( (parenthesized_expression "(uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))" ( (binary_expression "uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" (binary_expression "uVar6 != uVar4" identifier != identifier) || (parenthesized_expression "((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" ( (binary_expression "(uint)param_2[1] <= *(uint *)(uVar3 + 0x28)" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" 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 "{\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" { (expression_statement "auVar7._8_8_ = 0;" (assignment_expression "auVar7._8_8_ = 0" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar7._0_8_ = uVar3;" (assignment_expression "auVar7._0_8_ = uVar3" (field_expression "auVar7._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar7;" return identifier ;) })) (labeled_statement "LAB_00194e30:\n  auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = uVar5;" (assignment_expression "auVar1._0_8_ = uVar5" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })))
(translation_unit "/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>\n   _M_get_insert_unique_pos(_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n   * this, key_type * __k) */\n\npair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> __thiscall\nstd::\n_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n           *this,key_type *__k)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  _Rb_tree_node_base *p_Var3;\n  Relobj *pRVar4;\n  _Rb_tree_node_base *p_Var5;\n  Relobj *pRVar6;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar7;\n  \n  p_Var3 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var3 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;\n    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    pRVar6 = __k->first;\n    pRVar4 = *(Relobj **)(p_Var3 + 1);\n  }\n  else {\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))\n  {\n    pVar7.second = (_Rb_tree_node_base *)0x0;\n    pVar7.first = p_Var3;\n    return pVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = p_Var5;\n  return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n}\n\n" comment (ERROR "pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : : identifier * >) (function_definition "__thiscall\nstd::\n_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n::_M_get_insert_unique_pos\n          (_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n           *this,key_type *__k)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  _Rb_tree_node_base *p_Var3;\n  Relobj *pRVar4;\n  _Rb_tree_node_base *p_Var5;\n  Relobj *pRVar6;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar7;\n  \n  p_Var3 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var3 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;\n    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    pRVar6 = __k->first;\n    pRVar4 = *(Relobj **)(p_Var3 + 1);\n  }\n  else {\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))\n  {\n    pVar7.second = (_Rb_tree_node_base *)0x0;\n    pVar7.first = p_Var3;\n    return pVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = p_Var5;\n  return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n}" (ms_call_modifier "__thiscall" __thiscall) type_identifier (ERROR "::\n_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n::" : : identifier < identifier : : identifier < identifier : : identifier * , identifier > , identifier : : identifier < identifier : : identifier < identifier : : identifier * , identifier > , identifier : : identifier : : identifier * > , identifier : : identifier < identifier : : identifier < identifier : : identifier < identifier : : identifier * , identifier > , identifier : : identifier : : identifier * > identifier > , identifier : : identifier < identifier : : identifier < identifier : : identifier * , identifier > identifier > , identifier : : identifier < identifier : : identifier < identifier : : identifier < identifier : : identifier * , identifier > , identifier : : identifier : : identifier * > identifier > identifier > : :) (function_declarator "_M_get_insert_unique_pos\n          (_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n           *this,key_type *__k)" identifier (parameter_list "(_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>\n           *this,key_type *__k)" ( (parameter_declaration "_Rb_tree<std::pair<const_gold::Relobj*" type_identifier (ERROR "<std::pair<const_gold::Relobj" < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_std::pair<const_std::pair<const_gold::Relobj*" type_identifier (ERROR "::pair<const_std::pair<const_gold::Relobj" : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_gold::Layout::Unique_segment_info" type_identifier (ERROR "::Layout::" : : identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*" type_identifier (ERROR "::_Select1st<std::pair<const_std::pair<const_gold::Relobj" : : identifier < identifier : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_gold::Layout::Unique_segment_info*>_" type_identifier (ERROR "::Layout::Unique_segment_info*>" : : identifier : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::less<std::pair<const_gold::Relobj*" type_identifier (ERROR "::less<std::pair<const_gold::Relobj" : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_unsigned_int>_" type_identifier (ERROR ">" >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair<const_std::pair<const_gold::Relobj*" type_identifier (ERROR "::allocator<std::pair<const_std::pair<const_gold::Relobj" : : identifier < identifier : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_gold::Layout::Unique_segment_info*>_>_>\n           *this" type_identifier (ERROR "::Layout::Unique_segment_info*>_>_>" : : identifier : : identifier * > identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "key_type *__k" type_identifier (pointer_declarator "*__k" * identifier)) ))) (compound_statement "{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  _Rb_tree_node_base *p_Var3;\n  Relobj *pRVar4;\n  _Rb_tree_node_base *p_Var5;\n  Relobj *pRVar6;\n  pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*> pVar7;\n  \n  p_Var3 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var3 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;\n    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    pRVar6 = __k->first;\n    pRVar4 = *(Relobj **)(p_Var3 + 1);\n  }\n  else {\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))\n  {\n    pVar7.second = (_Rb_tree_node_base *)0x0;\n    pVar7.first = p_Var3;\n    return pVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = p_Var5;\n  return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "_Rb_tree_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "Relobj *pRVar4;" type_identifier (pointer_declarator "*pRVar4" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "Relobj *pRVar6;" type_identifier (pointer_declarator "*pRVar6" * identifier) ;) (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_node_base*,_std" identifier * (ERROR "," ,) identifier) : :) (expression_statement "_Rb_tree_node_base*> pVar7;" (binary_expression "_Rb_tree_node_base*> pVar7" identifier * (ERROR ">" >) identifier) ;) (expression_statement "p_Var3 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var3 = (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)) ;) (if_statement "if (p_Var3 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;\n    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    pRVar6 = __k->first;\n    pRVar4 = *(Relobj **)(p_Var3 + 1);\n  }\n  else {\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }" if (parenthesized_expression "(p_Var3 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var3 == (_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 = &(this->_M_impl).super__Rb_tree_header._M_header;\nLAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;\n    p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    pRVar6 = __k->first;\n    pRVar4 = *(Relobj **)(p_Var3 + 1);\n  }" { (expression_statement "p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header;" (assignment_expression "p_Var5 = &(this->_M_impl).super__Rb_tree_header._M_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_header" & (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))) ;) (labeled_statement "LAB_00194e64:\n    if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;" statement_identifier : (if_statement "if (p_Var5 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;" 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_00194e30;" goto statement_identifier ;))) (expression_statement "p_Var3 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);" (assignment_expression "p_Var3 = (_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 "pRVar6 = __k->first;" (assignment_expression "pRVar6 = __k->first" identifier = (field_expression "__k->first" identifier -> field_identifier)) ;) (expression_statement "pRVar4 = *(Relobj **)(p_Var3 + 1);" (assignment_expression "pRVar4 = *(Relobj **)(p_Var3 + 1)" identifier = (pointer_expression "*(Relobj **)(p_Var3 + 1)" * (cast_expression "(Relobj **)(p_Var3 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var3 + 1)" ( (binary_expression "p_Var3 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }" else (compound_statement "{\n    pRVar6 = __k->first;\n    do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);\n    p_Var3 = p_Var5;\n    if (bVar2) goto LAB_00194e64;\n  }" { (expression_statement "pRVar6 = __k->first;" (assignment_expression "pRVar6 = __k->first" identifier = (field_expression "__k->first" identifier -> field_identifier)) ;) (do_statement "do {\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    } while (p_Var3 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var5 = p_Var3;\n      pRVar4 = *(Relobj **)(p_Var5 + 1);\n      if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }\n    }" { (expression_statement "p_Var5 = p_Var3;" (assignment_expression "p_Var5 = p_Var3" identifier = identifier) ;) (expression_statement "pRVar4 = *(Relobj **)(p_Var5 + 1);" (assignment_expression "pRVar4 = *(Relobj **)(p_Var5 + 1)" identifier = (pointer_expression "*(Relobj **)(p_Var5 + 1)" * (cast_expression "(Relobj **)(p_Var5 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         ) {\n        p_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }\n      else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }" if (parenthesized_expression "((pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))\n         )" ( (binary_expression "(pRVar6 < pRVar4) || ((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))" (parenthesized_expression "(pRVar6 < pRVar4)" ( (binary_expression "pRVar6 < pRVar4" identifier < identifier) )) || (parenthesized_expression "((pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)))" ( (parenthesized_expression "(pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent))" ( (binary_expression "pRVar4 == pRVar6 && (__k->second < *(uint *)&p_Var5[1]._M_parent)" (binary_expression "pRVar4 == pRVar6" identifier == identifier) && (parenthesized_expression "(__k->second < *(uint *)&p_Var5[1]._M_parent)" ( (binary_expression "__k->second < *(uint *)&p_Var5[1]._M_parent" (field_expression "__k->second" identifier -> 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_Var3 = p_Var5->_M_left;\n        bVar2 = true;\n      }" { (expression_statement "p_Var3 = p_Var5->_M_left;" (assignment_expression "p_Var3 = p_Var5->_M_left" identifier = (field_expression "p_Var5->_M_left" identifier -> field_identifier)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }" else (compound_statement "{\n        p_Var3 = p_Var5->_M_right;\n        bVar2 = false;\n      }" { (expression_statement "p_Var3 = p_Var5->_M_right;" (assignment_expression "p_Var3 = p_Var5->_M_right" identifier = (field_expression "p_Var5->_M_right" identifier -> field_identifier)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(p_Var3 != (_Base_ptr)0x0)" ( (binary_expression "p_Var3 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var3 = p_Var5;" (assignment_expression "p_Var3 = p_Var5" identifier = identifier) ;) (if_statement "if (bVar2) goto LAB_00194e64;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_00194e64;" goto statement_identifier ;)) }))) (if_statement "if ((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))\n  {\n    pVar7.second = (_Rb_tree_node_base *)0x0;\n    pVar7.first = p_Var3;\n    return pVar7;\n  }" if (parenthesized_expression "((pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))))" ( (binary_expression "(pRVar6 <= pRVar4) && ((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent)))" (parenthesized_expression "(pRVar6 <= pRVar4)" ( (binary_expression "pRVar6 <= pRVar4" identifier <= identifier) )) && (parenthesized_expression "((pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent)))" ( (parenthesized_expression "(pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent))" ( (binary_expression "pRVar6 != pRVar4 || (__k->second <= *(uint *)&p_Var3[1]._M_parent)" (binary_expression "pRVar6 != pRVar4" identifier != identifier) || (parenthesized_expression "(__k->second <= *(uint *)&p_Var3[1]._M_parent)" ( (binary_expression "__k->second <= *(uint *)&p_Var3[1]._M_parent" (field_expression "__k->second" identifier -> field_identifier) <= (pointer_expression "*(uint *)&p_Var3[1]._M_parent" * (cast_expression "(uint *)&p_Var3[1]._M_parent" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var3[1]._M_parent" & (field_expression "p_Var3[1]._M_parent" (subscript_expression "p_Var3[1]" identifier [ number_literal ]) . field_identifier))))) ))) )) ))) )) (compound_statement "{\n    pVar7.second = (_Rb_tree_node_base *)0x0;\n    pVar7.first = p_Var3;\n    return pVar7;\n  }" { (expression_statement "pVar7.second = (_Rb_tree_node_base *)0x0;" (assignment_expression "pVar7.second = (_Rb_tree_node_base *)0x0" (field_expression "pVar7.second" identifier . field_identifier) = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pVar7.first = p_Var3;" (assignment_expression "pVar7.first = p_Var3" (field_expression "pVar7.first" identifier . field_identifier) = identifier) ;) (return_statement "return pVar7;" return identifier ;) })) (labeled_statement "LAB_00194e30:\n  auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = p_Var5;" (assignment_expression "auVar1._0_8_ = p_Var5" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return (pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40);" return (call_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)(auVar1 << 0x40)" (parenthesized_expression "(pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>)" ( (ERROR "pair<std::_Rb_tree_node_base*,_std::" (binary_expression "pair<std" identifier < identifier) : : (type_descriptor "_Rb_tree_node_base*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : :) identifier (ERROR "*>" * >) )) (argument_list "(auVar1 << 0x40)" ( (binary_expression "auVar1 << 0x40" identifier << number_literal) ))) ;) })))
(translation_unit "undefined1  [16] FUN_00194dd0(long param_1,ulong *param_2)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_00194dd0(long param_1,ulong *param_2)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" type_identifier (ERROR "(long param_1,ulong" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" { (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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) )))) == number_literal) )) (compound_statement "{\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }" { (expression_statement "uVar5 = param_1 + 8;" (assignment_expression "uVar5 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (labeled_statement "LAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" statement_identifier : (if_statement "if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" if (parenthesized_expression "(uVar5 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar5 == *(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_00194e30;" goto statement_identifier ;))) (expression_statement "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);" (assignment_expression "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5)" identifier = (call_expression "thunk_FUN_00278080(uVar5,param_2,uVar5)" identifier (argument_list "(uVar5,param_2,uVar5)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar4 = *(ulong *)(uVar3 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar3 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar3 + 0x20)" * (cast_expression "(ulong *)(uVar3 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x20)" ( (binary_expression "uVar3 + 0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" else (compound_statement "{\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" { (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" identifier = (pointer_expression "*param_2" * 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) ))))) ;) (do_statement "do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);" do (compound_statement "{\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    }" { (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x20)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x20)" * (cast_expression "(ulong *)(uVar5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" if (parenthesized_expression "((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))))" ( (binary_expression "(uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) || (parenthesized_expression "((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" ( (parenthesized_expression "(uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))" ( (binary_expression "uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" (binary_expression "uVar4 == uVar6" identifier == identifier) && (parenthesized_expression "((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" ( (binary_expression "(uint)param_2[1] < *(uint *)(uVar5 + 0x28)" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) < (pointer_expression "*(uint *)(uVar5 + 0x28)" * (cast_expression "(uint *)(uVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x28)" ( (binary_expression "uVar5 + 0x28" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" else (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" { (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }))) }) while (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) (if_statement "if (bVar2) goto LAB_00194e64;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_00194e64;" goto statement_identifier ;)) }))) (if_statement "if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" if (parenthesized_expression "((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))))" ( (binary_expression "(uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" (parenthesized_expression "(uVar6 <= uVar4)" ( (binary_expression "uVar6 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" ( (parenthesized_expression "(uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))" ( (binary_expression "uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" (binary_expression "uVar6 != uVar4" identifier != identifier) || (parenthesized_expression "((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" ( (binary_expression "(uint)param_2[1] <= *(uint *)(uVar3 + 0x28)" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" 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 "{\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" { (expression_statement "auVar7._8_8_ = 0;" (assignment_expression "auVar7._8_8_ = 0" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar7._0_8_ = uVar3;" (assignment_expression "auVar7._0_8_ = uVar3" (field_expression "auVar7._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar7;" return identifier ;) })) (labeled_statement "LAB_00194e30:\n  auVar1._8_8_ = 0;" statement_identifier : (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" identifier . field_identifier) = number_literal) ;)) (expression_statement "auVar1._0_8_ = uVar5;" (assignment_expression "auVar1._0_8_ = uVar5" (field_expression "auVar1._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar1 << 0x40;" return (binary_expression "auVar1 << 0x40" identifier << number_literal) ;) })))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (function_definition TYPE (ERROR ( (type_descriptor (sized_type_specifier long TYPE)) , IDENT) (pointer_declarator * IDENT) (ERROR )) (compound_statement { (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (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 ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ 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) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return (binary_expression IDENT << LIT) ;) })))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (function_definition "FUN_00194dd0(long param_1,ulong *param_2)\n\n{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" (type_identifier "FUN_00194dd0") (ERROR "(long param_1,ulong" (( "(") (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (identifier "ulong")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (ERROR ")" () ")")) (compound_statement "{\n  undefined1 auVar1 [16];\n  bool bVar2;\n  ulong uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  undefined1 auVar7 [16];\n  \n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }\n  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }\nLAB_00194e30:\n  auVar1._8_8_ = 0;\n  auVar1._0_8_ = uVar5;\n  return auVar1 << 0x40;\n}" ({ "{") (declaration "undefined1 auVar1 [16];" (type_identifier "undefined1") (array_declarator "auVar1 [16]" (identifier "auVar1") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "undefined1 auVar7 [16];" (type_identifier "undefined1") (array_declarator "auVar7 [16]" (identifier "auVar7") ([ "[") (number_literal "16") (] "]")) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }\n  else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (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")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = param_1 + 8;\nLAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;\n    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);\n    uVar6 = *param_2;\n    uVar4 = *(ulong *)(uVar3 + 0x20);\n  }" ({ "{") (expression_statement "uVar5 = param_1 + 8;" (assignment_expression "uVar5 = param_1 + 8" (identifier "uVar5") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (labeled_statement "LAB_00194e64:\n    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" (statement_identifier "LAB_00194e64") (: ":") (if_statement "if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;" (if "if") (parenthesized_expression "(uVar5 == *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar5 == *(ulong *)(param_1 + 0x18)" (identifier "uVar5") (== "==") (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (goto_statement "goto LAB_00194e30;" (goto "goto") (statement_identifier "LAB_00194e30") (; ";")))) (expression_statement "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);" (assignment_expression "uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5)" (identifier "uVar3") (= "=") (call_expression "thunk_FUN_00278080(uVar5,param_2,uVar5)" (identifier "thunk_FUN_00278080") (argument_list "(uVar5,param_2,uVar5)" (( "(") (identifier "uVar5") (, ",") (identifier "param_2") (, ",") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" (identifier "uVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar4 = *(ulong *)(uVar3 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar3 + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar3 + 0x20)" (* "*") (cast_expression "(ulong *)(uVar3 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x20)" (( "(") (binary_expression "uVar3 + 0x20" (identifier "uVar3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" (else "else") (compound_statement "{\n    uVar6 = *param_2;\n    uVar3 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);\n    uVar3 = uVar5;\n    if (bVar2) goto LAB_00194e64;\n  }" ({ "{") (expression_statement "uVar6 = *param_2;" (assignment_expression "uVar6 = *param_2" (identifier "uVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (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")) () ")"))))) (; ";")) (do_statement "do {\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    } while (uVar3 != 0);" (do "do") (compound_statement "{\n      uVar5 = uVar3;\n      uVar4 = *(ulong *)(uVar5 + 0x20);\n      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }\n    }" ({ "{") (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" (identifier "uVar5") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x20);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x20)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x20)" (( "(") (binary_expression "uVar5 + 0x20" (identifier "uVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }\n      else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" (if "if") (parenthesized_expression "((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))))" (( "(") (binary_expression "(uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" (parenthesized_expression "(uVar6 < uVar4)" (( "(") (binary_expression "uVar6 < uVar4" (identifier "uVar6") (< "<") (identifier "uVar4")) () ")")) (|| "||") (parenthesized_expression "((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))" (( "(") (parenthesized_expression "(uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28)))" (( "(") (binary_expression "uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" (binary_expression "uVar4 == uVar6" (identifier "uVar4") (== "==") (identifier "uVar6")) (&& "&&") (parenthesized_expression "((uint)param_2[1] < *(uint *)(uVar5 + 0x28))" (( "(") (binary_expression "(uint)param_2[1] < *(uint *)(uVar5 + 0x28)" (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (< "<") (pointer_expression "*(uint *)(uVar5 + 0x28)" (* "*") (cast_expression "(uint *)(uVar5 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x28)" (( "(") (binary_expression "uVar5 + 0x28" (identifier "uVar5") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x10);\n        bVar2 = true;\n      }" ({ "{") (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x10)" (( "(") (binary_expression "uVar5 + 0x10" (identifier "uVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" (else "else") (compound_statement "{\n        uVar3 = *(ulong *)(uVar5 + 0x18);\n        bVar2 = false;\n      }" ({ "{") (expression_statement "uVar3 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar3 = *(ulong *)(uVar5 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x18)" (( "(") (binary_expression "uVar5 + 0x18" (identifier "uVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" (identifier "uVar3") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (bVar2) goto LAB_00194e64;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (goto_statement "goto LAB_00194e64;" (goto "goto") (statement_identifier "LAB_00194e64") (; ";"))) (} "}")))) (if_statement "if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" (if "if") (parenthesized_expression "((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))))" (( "(") (binary_expression "(uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" (parenthesized_expression "(uVar6 <= uVar4)" (( "(") (binary_expression "uVar6 <= uVar4" (identifier "uVar6") (<= "<=") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))" (( "(") (parenthesized_expression "(uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28)))" (( "(") (binary_expression "uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" (binary_expression "uVar6 != uVar4" (identifier "uVar6") (!= "!=") (identifier "uVar4")) (|| "||") (parenthesized_expression "((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))" (( "(") (binary_expression "(uint)param_2[1] <= *(uint *)(uVar3 + 0x28)" (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (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 "{\n    auVar7._8_8_ = 0;\n    auVar7._0_8_ = uVar3;\n    return auVar7;\n  }" ({ "{") (expression_statement "auVar7._8_8_ = 0;" (assignment_expression "auVar7._8_8_ = 0" (field_expression "auVar7._8_8_" (identifier "auVar7") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar7._0_8_ = uVar3;" (assignment_expression "auVar7._0_8_ = uVar3" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return auVar7;" (return "return") (identifier "auVar7") (; ";")) (} "}"))) (labeled_statement "LAB_00194e30:\n  auVar1._8_8_ = 0;" (statement_identifier "LAB_00194e30") (: ":") (expression_statement "auVar1._8_8_ = 0;" (assignment_expression "auVar1._8_8_ = 0" (field_expression "auVar1._8_8_" (identifier "auVar1") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "auVar1._0_8_ = uVar5;" (assignment_expression "auVar1._0_8_ = uVar5" (field_expression "auVar1._0_8_" (identifier "auVar1") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar5")) (; ";")) (return_statement "return auVar1 << 0x40;" (return "return") (binary_expression "auVar1 << 0x40" (identifier "auVar1") (<< "<<") (number_literal "0x40")) (; ";")) (} "}")))

/* DWARF original prototype: pair<std::_Rb_tree_node_base*,_std::_Rb_tree_node_base*>
   _M_get_insert_unique_pos(_Rb_tree<std::pair<const_gold::Relobj*,_unsigned_int>,_std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>,_std::_Select1st<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>,_std::less<std::pair<const_gold::Relobj*,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<const_gold::Relobj*,_unsigned_int>,_gold::Layout::Unique_segment_info*>_>_>
   * this, key_type * __k) */

pair<type_1::type_8*,type_4::type_8*> __thiscall
type_1::
type_2<type_1::pair<const_gold::type_9*,type_3>,type_4::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>,type_4::_Select1st<type_1::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>_>,type_4::less<type_1::pair<const_gold::type_9*,type_3>_>,type_4::allocator<type_1::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>_>_>
::function_1
          (type_2<type_1::pair<const_gold::type_9*,type_3>,type_4::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>,type_4::_Select1st<type_1::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>_>,type_4::less<type_1::pair<const_gold::type_9*,type_3>_>,type_4::allocator<type_1::pair<const_std::pair<const_gold::type_9*,type_3>,type_5::Layout::Unique_segment_info*>_>_>
           *this,type_6 *__k)

{
  type_7 var_7 [16];
  bool bVar2;
  type_8 *var_2;
  type_9 *var_6;
  type_8 *var_3;
  type_9 *var_5;
  pair<type_1::type_8*,type_4::type_8*> var_1;
  
  var_2 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (var_2 == (type_8 *)0x0) {
    var_3 = &(this->_M_impl).super__Rb_tree_header._M_header;
LAB_00194e64:
    if (var_3 == (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00194e30;
    var_2 = (type_8 *)var_4(var_3);
    var_5 = __k->first;
    var_6 = *(type_9 **)(var_2 + 1);
  }
  else {
    var_5 = __k->first;
    do {
      var_3 = var_2;
      var_6 = *(type_9 **)(var_3 + 1);
      if ((var_5 < var_6) || ((var_6 == var_5 && (__k->second < *(type_10 *)&var_3[1]._M_parent)))
         ) {
        var_2 = var_3->_M_left;
        bVar2 = true;
      }
      else {
        var_2 = var_3->_M_right;
        bVar2 = false;
      }
    } while (var_2 != (type_11)0x0);
    var_2 = var_3;
    if (bVar2) goto LAB_00194e64;
  }
  if ((var_5 <= var_6) && ((var_5 != var_6 || (__k->second <= *(type_10 *)&var_2[1]._M_parent))))
  {
    var_1.second = (type_8 *)0x0;
    var_1.first = var_2;
    return var_1;
  }
LAB_00194e30:
  var_7._8_8_ = 0;
  var_7._0_8_ = var_3;
  return (pair<type_1::type_8*,type_4::type_8*>)(var_7 << 0x40);
}


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

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

{
  undefined1 auVar1 [16];
  bool bVar2;
  ulong uVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  undefined1 auVar7 [16];
  
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar5 = param_1 + 8;
LAB_00194e64:
    if (uVar5 == *(ulong *)(param_1 + 0x18)) goto LAB_00194e30;
    uVar3 = thunk_FUN_00278080(uVar5,param_2,uVar5);
    uVar6 = *param_2;
    uVar4 = *(ulong *)(uVar3 + 0x20);
  }
  else {
    uVar6 = *param_2;
    uVar3 = *(ulong *)(param_1 + 0x10);
    do {
      uVar5 = uVar3;
      uVar4 = *(ulong *)(uVar5 + 0x20);
      if ((uVar6 < uVar4) || ((uVar4 == uVar6 && ((uint)param_2[1] < *(uint *)(uVar5 + 0x28))))) {
        uVar3 = *(ulong *)(uVar5 + 0x10);
        bVar2 = true;
      }
      else {
        uVar3 = *(ulong *)(uVar5 + 0x18);
        bVar2 = false;
      }
    } while (uVar3 != 0);
    uVar3 = uVar5;
    if (bVar2) goto LAB_00194e64;
  }
  if ((uVar6 <= uVar4) && ((uVar6 != uVar4 || ((uint)param_2[1] <= *(uint *)(uVar3 + 0x28))))) {
    auVar7._8_8_ = 0;
    auVar7._0_8_ = uVar3;
    return auVar7;
  }
LAB_00194e30:
  auVar1._8_8_ = 0;
  auVar1._0_8_ = uVar5;
  return auVar1 << 0x40;
}

