
/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, (anonymous
   namespace)::Mips16_stub_section<64, false>*> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>
   _M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>
   * this, pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*> * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>
 __thiscall
std::
_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>
::
_M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>
          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>
           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>
                 *__args_0)

{
  _Rb_tree_header *p_Var1;
  size_t *psVar2;
  _Rb_tree_color _Var3;
  _Rb_tree_color _Var4;
  _Rb_tree_node_base *p_Var5;
  _Rb_tree_node_base *p_Var6;
  bool bVar7;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>
  pVar8;
  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>
  pVar9;
  
  p_Var1 = &(this->_M_impl).super__Rb_tree_header;
  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);
  _Var3 = __args_0->first;
  pVar8.first._M_node[1]._M_color = _Var3;
  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;
  if (p_Var5 == (_Rb_tree_node_base *)0x0) {
    p_Var6 = &p_Var1->_M_header;
    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {
      bVar7 = true;
      goto LAB_0028dec7;
    }
LAB_0028def7:
    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);
    if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {
LAB_0028df08:
      operator_delete(pVar8.first._M_node);
      pVar9._8_8_ = 0;
      pVar9.first._M_node = p_Var5;
      return pVar9;
    }
  }
  else {
    do {
      p_Var6 = p_Var5;
      _Var4 = p_Var6[1]._M_color;
      if (_Var3 < _Var4) {
        p_Var5 = p_Var6->_M_left;
      }
      else {
        p_Var5 = p_Var6->_M_right;
      }
    } while (p_Var5 != (_Base_ptr)0x0);
    if (_Var3 < _Var4) {
      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;
    }
    else {
      p_Var5 = p_Var6;
      if (_Var3 <= _Var4) goto LAB_0028df08;
    }
  }
  bVar7 = true;
  if (p_Var1 != (_Rb_tree_header *)p_Var6) {
    bVar7 = _Var3 < p_Var6[1]._M_color;
  }
LAB_0028dec7:
  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  pVar8._8_8_ = 1;
  return pVar8;
}



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

{
  ulong uVar1;
  uint uVar2;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  bool bVar6;
  undefined1 auVar7 [16];
  undefined1 auVar8 [16];
  
  uVar1 = param_1 + 8;
  auVar7._0_8_ = FUN_0049cb70(0x30);
  uVar2 = *param_2;
  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;
  uVar4 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);
  if (uVar4 == 0) {
    uVar5 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar6 = true;
      goto LAB_0028dec7;
    }
LAB_0028def7:
    uVar4 = thunk_FUN_0049f6a0(uVar5);
    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {
LAB_0028df08:
      FUN_0049e340(auVar7._0_8_);
      auVar8._8_8_ = 0;
      auVar8._0_8_ = uVar4;
      return auVar8;
    }
  }
  else {
    do {
      uVar5 = uVar4;
      uVar3 = *(uint *)(uVar5 + 0x20);
      if (uVar2 < uVar3) {
        uVar4 = *(ulong *)(uVar5 + 0x10);
      }
      else {
        uVar4 = *(ulong *)(uVar5 + 0x18);
      }
    } while (uVar4 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;
    }
    else {
      uVar4 = uVar5;
      if (uVar2 <= uVar3) goto LAB_0028df08;
    }
  }
  bVar6 = true;
  if (uVar1 != uVar5) {
    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);
  }
LAB_0028dec7:
  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar7._8_8_ = 1;
  return auVar7;
}


PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
MOV EDI,0x30
PUSH RBP
LEA R14,[R12 + 0x8]
PUSH RBX
MOV RBX,RSI
CALL 0x0049cb70
MOV R13D,dword ptr [RBX]
MOV RBP,RAX
MOV dword ptr [RAX + 0x20],R13D
MOV RAX,qword ptr [RBX + 0x8]
MOV RBX,qword ptr [R12 + 0x10]
MOV qword ptr [RBP + 0x28],RAX
TEST RBX,RBX
JNZ 0x0028dea1
JMP 0x0028df40
MOV RAX,qword ptr [RBX + 0x10]
MOV EDX,0x1
TEST RAX,RAX
JZ 0x0028deb4
MOV RBX,RAX
MOV ECX,dword ptr [RBX + 0x20]
CMP R13D,ECX
JC 0x0028de90
MOV RAX,qword ptr [RBX + 0x18]
XOR EDX,EDX
TEST RAX,RAX
JNZ 0x0028de9e
TEST DL,DL
JNZ 0x0028def0
CMP R13D,ECX
JBE 0x0028df08
MOV EDI,0x1
CMP R14,RBX
JNZ 0x0028df2f
MOV RDX,RBX
MOV RCX,R14
MOV RSI,RBP
CALL 0x0049f840
POP RBX
MOV RAX,RBP
ADD qword ptr [R12 + 0x28],0x1
POP RBP
MOV EDX,0x1
POP R12
POP R13
POP R14
RET
CMP qword ptr [R12 + 0x18],RBX
JZ 0x0028debd
MOV RDI,RBX
CALL 0x0049f760
CMP R13D,dword ptr [RAX + 0x20]
JA 0x0028df20
MOV RBX,RAX
MOV RDI,RBP
CALL 0x0049e340
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
TEST RBX,RBX
JZ 0x0028df08
MOV EDI,0x1
CMP R14,RBX
JZ 0x0028dec7
XOR EDI,EDI
CMP R13D,dword ptr [RBX + 0x20]
SETC DIL
JMP 0x0028dec7
MOV RBX,R14
CMP qword ptr [R12 + 0x18],R14
JNZ 0x0028def7
MOV EDI,0x1
JMP 0x0028dec7
(translation_unit "undefined1  [16] FUN_0028de50(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_0028de50(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" type_identifier (ERROR "(long param_1,uint" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "auVar7._0_8_ = FUN_0049cb70(0x30);" (assignment_expression "auVar7._0_8_ = FUN_0049cb70(0x30)" (field_expression "auVar7._0_8_" identifier . field_identifier) = (call_expression "FUN_0049cb70(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar7._0_8_ + 0x20)" * (cast_expression "(uint *)(auVar7._0_8_ + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x20)" ( (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);" (assignment_expression "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2)" (pointer_expression "*(undefined8 *)(auVar7._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar7._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x28)" ( (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_2 + 2)" * (cast_expression "(undefined8 *)(param_2 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" { (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" ( (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (goto_statement "goto LAB_0028dec7;" goto statement_identifier ;) })) (labeled_statement "LAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);" statement_identifier : (expression_statement "uVar4 = thunk_FUN_0049f6a0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_0049f6a0(uVar5)" identifier = (call_expression "thunk_FUN_0049f6a0(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" if (parenthesized_expression "((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" ( (binary_expression "(uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar4 + 0x20))" ( (binary_expression "uVar2 <= *(uint *)(uVar4 + 0x20)" identifier <= (pointer_expression "*(uint *)(uVar4 + 0x20)" * (cast_expression "(uint *)(uVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" ( (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" identifier = identifier) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" { (labeled_statement "LAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);" statement_identifier : (expression_statement "FUN_0049e340(auVar7._0_8_);" (call_expression "FUN_0049e340(auVar7._0_8_)" identifier (argument_list "(auVar7._0_8_)" ( (field_expression "auVar7._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar8;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" { (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" do (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" { (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = *(uint *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(uVar5 + 0x20)" * (cast_expression "(uint *)(uVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" else (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0028def7;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" else (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_0028df08;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_0028df08;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar5)" ( (binary_expression "uVar1 != uVar5" identifier != identifier) )) (compound_statement "{\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" { (expression_statement "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20)" identifier = (binary_expression "uVar2 < *(uint *)(uVar5 + 0x20)" identifier < (pointer_expression "*(uint *)(uVar5 + 0x20)" * (cast_expression "(uint *)(uVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" statement_identifier : (expression_statement "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1)" identifier (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" ( identifier , (field_expression "auVar7._0_8_" identifier . field_identifier) , identifier , identifier ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar7;" return identifier ;) })))
(translation_unit "/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, (anonymous\n   namespace)::Mips16_stub_section<64, false>*> >\n   DWARF original prototype:\n   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n   _M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n   * this, pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*> * __args#0) */\n\npair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Rb_tree_color _Var3;\n  _Rb_tree_color _Var4;\n  _Rb_tree_node_base *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  bool bVar7;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar8;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar9;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);\n  _Var3 = __args_0->first;\n  pVar8.first._M_node[1]._M_color = _Var3;\n  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;\n  if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }\n  }\n  bVar7 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = _Var3 < p_Var6[1]._M_color;\n  }\nLAB_0028dec7:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar8._8_8_ = 1;\n  return pVar8;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<unsigned_int," (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (binary_expression "pair<unsigned_int_const" identifier < identifier) , type_identifier (parenthesized_declarator "(anonymous_namespace)" ( identifier )) : : identifier < number_literal , (binary_expression "_false>*>_>,_bool>\n __thiscall\nstd::\n_Rb_tree<unsigned_int" (binary_expression "_false>*>_>,_bool>\n __thiscall" (binary_expression "_false>*>_>,_bool" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (ERROR "," ,) identifier) > identifier) (ERROR "std::\n_Rb_tree" identifier : : identifier) < identifier) ,) (labeled_statement "_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)" statement_identifier (ERROR "::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n::\n_M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace):" : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>,_std" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>_>,_std" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>,_std" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (ERROR "," ,) identifier)) : : (binary_expression "less<unsigned_int>,_std" (binary_expression "less<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>_>_>\n::\n_M_emplace_unique<std" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>_>\n::\n_M_emplace_unique<std" (binary_expression "_false>*>_>_>\n::\n_M_emplace_unique" (binary_expression "_false>*>_>_" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > identifier) > (ERROR "::" : :) identifier) < identifier)) : : (comma_expression "pair<unsigned_int,_(anonymous_namespace)" (binary_expression "pair<unsigned_int" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) :) : (expression_statement "Mips16_stub_section<64,_false>*>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)" (comma_expression "Mips16_stub_section<64,_false>*>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>\n          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (parenthesized_expression "(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>\n                 *__args_0)" ( (ERROR "_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)::" (comma_expression "_Rb_tree<unsigned_int,_std" (binary_expression "_Rb_tree<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>,_std" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>_>,_std" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>,_std" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (ERROR "," ,) identifier)) : : (binary_expression "less<unsigned_int>,_std" (binary_expression "less<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips16_stub_section<64,_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (comma_expression "_false>*>_>_>\n           *this,pair<unsigned_int,_(anonymous_namespace)" (binary_expression "_false>*>_>_>\n           *this" (binary_expression "_false>*>_>_" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > identifier) > (pointer_expression "*this" * identifier)) , (comma_expression "pair<unsigned_int,_(anonymous_namespace)" (binary_expression "pair<unsigned_int" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))))) : :) (comma_expression "Mips16_stub_section<64,_false>*>\n                 *__args_0" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>\n                 *__args_0" identifier > (pointer_expression "*>\n                 *__args_0" * (ERROR ">" >) (pointer_expression "*__args_0" * identifier)))) )))) ;)) (compound_statement "{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  _Rb_tree_color _Var3;\n  _Rb_tree_color _Var4;\n  _Rb_tree_node_base *p_Var5;\n  _Rb_tree_node_base *p_Var6;\n  bool bVar7;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar8;\n  pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar9;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  pVar8.first._M_node = (_Base_ptr)operator_new(0x30);\n  _Var3 = __args_0->first;\n  pVar8.first._M_node[1]._M_color = _Var3;\n  p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;\n  if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }\n  }\n  bVar7 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = _Var3 < p_Var6[1]._M_color;\n  }\nLAB_0028dec7:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar8._8_8_ = 1;\n  return pVar8;\n}" { (declaration "_Rb_tree_header *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "size_t *psVar2;" primitive_type (pointer_declarator "*psVar2" * identifier) ;) (declaration "_Rb_tree_color _Var3;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var4;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : :) (expression_statement "Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar8;" (comma_expression "Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar8" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>,_bool>\n  pVar8" (binary_expression "_false>*>_>,_bool" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (ERROR "," ,) identifier) > identifier)) ;) (ERROR "pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_(anonymous_namespace)" (binary_expression "pair<unsigned_int_const" identifier < identifier) , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : :) (expression_statement "Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar9;" (comma_expression "Mips16_stub_section<64,_false>*>_>,_bool>\n  pVar9" (binary_expression "Mips16_stub_section<64" identifier < number_literal) , (binary_expression "_false>*>_>,_bool>\n  pVar9" (binary_expression "_false>*>_>,_bool" (binary_expression "_false>*>_" identifier > (pointer_expression "*>_" * (ERROR ">" >) identifier)) > (ERROR "," ,) identifier) > identifier)) ;) (expression_statement "p_Var1 = &(this->_M_impl).super__Rb_tree_header;" (assignment_expression "p_Var1 = &(this->_M_impl).super__Rb_tree_header" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header" & (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pVar8.first._M_node = (_Base_ptr)operator_new(0x30);" (assignment_expression "pVar8.first._M_node = (_Base_ptr)operator_new(0x30)" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x30)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "_Var3 = __args_0->first;" (assignment_expression "_Var3 = __args_0->first" identifier = (field_expression "__args_0->first" identifier -> field_identifier)) ;) (expression_statement "pVar8.first._M_node[1]._M_color = _Var3;" (assignment_expression "pVar8.first._M_node[1]._M_color = _Var3" (field_expression "pVar8.first._M_node[1]._M_color" (subscript_expression "pVar8.first._M_node[1]" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var5 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_parent" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second;" (assignment_expression "pVar8.first._M_node[1]._M_parent = (_Base_ptr)__args_0->second" (field_expression "pVar8.first._M_node[1]._M_parent" (subscript_expression "pVar8.first._M_node[1]" (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(_Base_ptr)__args_0->second" ( (type_descriptor "_Base_ptr" type_identifier) ) (field_expression "__args_0->second" identifier -> field_identifier))) ;) (if_statement "if (p_Var5 == (_Rb_tree_node_base *)0x0) {\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }\n  else {\n    do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }\n  }" if (parenthesized_expression "(p_Var5 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var5 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var6 = &p_Var1->_M_header;\n    if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);\n    if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }\n  }" { (expression_statement "p_Var6 = &p_Var1->_M_header;" (assignment_expression "p_Var6 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if ((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1) {\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }" if (parenthesized_expression "((_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1)" ( (binary_expression "(_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left == p_Var1" (cast_expression "(_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) == identifier) )) (compound_statement "{\n      bVar7 = true;\n      goto LAB_0028dec7;\n    }" { (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (goto_statement "goto LAB_0028dec7;" goto statement_identifier ;) })) (labeled_statement "LAB_0028def7:\n    p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);" statement_identifier : (expression_statement "p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6);" (assignment_expression "p_Var5 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var6)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var6)" identifier (argument_list "(p_Var6)" ( identifier ))))) ;)) (if_statement "if ((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)) {\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }" if (parenthesized_expression "((_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0))" ( (binary_expression "(_Var3 <= p_Var5[1]._M_color) || (p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)" (parenthesized_expression "(_Var3 <= p_Var5[1]._M_color)" ( (binary_expression "_Var3 <= p_Var5[1]._M_color" identifier <= (field_expression "p_Var5[1]._M_color" (subscript_expression "p_Var5[1]" identifier [ number_literal ]) . field_identifier)) )) || (parenthesized_expression "(p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0)" ( (comma_expression "p_Var5 = p_Var6, p_Var6 == (_Rb_tree_node_base *)0x0" (assignment_expression "p_Var5 = p_Var6" identifier = identifier) , (binary_expression "p_Var6 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_0028df08:\n      operator_delete(pVar8.first._M_node);\n      pVar9._8_8_ = 0;\n      pVar9.first._M_node = p_Var5;\n      return pVar9;\n    }" { (labeled_statement "LAB_0028df08:\n      operator_delete(pVar8.first._M_node);" statement_identifier : (expression_statement "operator_delete(pVar8.first._M_node);" (call_expression "operator_delete(pVar8.first._M_node)" identifier (argument_list "(pVar8.first._M_node)" ( (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) ))) ;)) (expression_statement "pVar9._8_8_ = 0;" (assignment_expression "pVar9._8_8_ = 0" (field_expression "pVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar9.first._M_node = p_Var5;" (assignment_expression "pVar9.first._M_node = p_Var5" (field_expression "pVar9.first._M_node" (field_expression "pVar9.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar9;" return identifier ;) })) }) (else_clause "else {\n    do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }\n  }" else (compound_statement "{\n    do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);\n    if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }\n  }" { (do_statement "do {\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    } while (p_Var5 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var6 = p_Var5;\n      _Var4 = p_Var6[1]._M_color;\n      if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }\n    }" { (expression_statement "p_Var6 = p_Var5;" (assignment_expression "p_Var6 = p_Var5" identifier = identifier) ;) (expression_statement "_Var4 = p_Var6[1]._M_color;" (assignment_expression "_Var4 = p_Var6[1]._M_color" identifier = (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (_Var3 < _Var4) {\n        p_Var5 = p_Var6->_M_left;\n      }\n      else {\n        p_Var5 = p_Var6->_M_right;\n      }" if (parenthesized_expression "(_Var3 < _Var4)" ( (binary_expression "_Var3 < _Var4" identifier < identifier) )) (compound_statement "{\n        p_Var5 = p_Var6->_M_left;\n      }" { (expression_statement "p_Var5 = p_Var6->_M_left;" (assignment_expression "p_Var5 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else {\n        p_Var5 = p_Var6->_M_right;\n      }" else (compound_statement "{\n        p_Var5 = p_Var6->_M_right;\n      }" { (expression_statement "p_Var5 = p_Var6->_M_right;" (assignment_expression "p_Var5 = p_Var6->_M_right" identifier = (field_expression "p_Var6->_M_right" identifier -> field_identifier)) ;) }))) }) while (parenthesized_expression "(p_Var5 != (_Base_ptr)0x0)" ( (binary_expression "p_Var5 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (_Var3 < _Var4) {\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }\n    else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }" if (parenthesized_expression "(_Var3 < _Var4)" ( (binary_expression "_Var3 < _Var4" identifier < identifier) )) (compound_statement "{\n      if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;\n    }" { (if_statement "if ((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6) goto LAB_0028def7;" if (parenthesized_expression "((this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6)" ( (binary_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left != p_Var6" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (goto_statement "goto LAB_0028def7;" goto statement_identifier ;)) }) (else_clause "else {\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }" else (compound_statement "{\n      p_Var5 = p_Var6;\n      if (_Var3 <= _Var4) goto LAB_0028df08;\n    }" { (expression_statement "p_Var5 = p_Var6;" (assignment_expression "p_Var5 = p_Var6" identifier = identifier) ;) (if_statement "if (_Var3 <= _Var4) goto LAB_0028df08;" if (parenthesized_expression "(_Var3 <= _Var4)" ( (binary_expression "_Var3 <= _Var4" identifier <= identifier) )) (goto_statement "goto LAB_0028df08;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (if_statement "if (p_Var1 != (_Rb_tree_header *)p_Var6) {\n    bVar7 = _Var3 < p_Var6[1]._M_color;\n  }" if (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var6)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var6" identifier != (cast_expression "(_Rb_tree_header *)p_Var6" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    bVar7 = _Var3 < p_Var6[1]._M_color;\n  }" { (expression_statement "bVar7 = _Var3 < p_Var6[1]._M_color;" (assignment_expression "bVar7 = _Var3 < p_Var6[1]._M_color" identifier = (binary_expression "_Var3 < p_Var6[1]._M_color" identifier < (field_expression "p_Var6[1]._M_color" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier))) ;) })) (labeled_statement "LAB_0028dec7:\n  _Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);" statement_identifier : (expression_statement "_Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header)" identifier (argument_list "(bVar7,pVar8.first._M_node,p_Var6,&p_Var1->_M_header)" ( identifier , (field_expression "pVar8.first._M_node" (field_expression "pVar8.first" identifier . field_identifier) . field_identifier) , identifier , (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier)) ))) ;)) (expression_statement "psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;" (assignment_expression "psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count" identifier = (pointer_expression "&(this->_M_impl).super__Rb_tree_header._M_node_count" & (field_expression "(this->_M_impl).super__Rb_tree_header._M_node_count" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar2 = *psVar2 + 1;" (assignment_expression "*psVar2 = *psVar2 + 1" (pointer_expression "*psVar2" * identifier) = (binary_expression "*psVar2 + 1" (pointer_expression "*psVar2" * identifier) + number_literal)) ;) (expression_statement "pVar8._8_8_ = 1;" (assignment_expression "pVar8._8_8_ = 1" (field_expression "pVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar8;" return identifier ;) }))
(translation_unit "undefined1  [16] FUN_0028de50(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (function_definition "FUN_0028de50(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" type_identifier (ERROR "(long param_1,uint" ( (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , identifier) (pointer_declarator "*param_2" * identifier) (ERROR ")" )) (compound_statement "{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "auVar7._0_8_ = FUN_0049cb70(0x30);" (assignment_expression "auVar7._0_8_ = FUN_0049cb70(0x30)" (field_expression "auVar7._0_8_" identifier . field_identifier) = (call_expression "FUN_0049cb70(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar7._0_8_ + 0x20)" * (cast_expression "(uint *)(auVar7._0_8_ + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x20)" ( (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);" (assignment_expression "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2)" (pointer_expression "*(undefined8 *)(auVar7._0_8_ + 0x28)" * (cast_expression "(undefined8 *)(auVar7._0_8_ + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar7._0_8_ + 0x28)" ( (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_2 + 2)" * (cast_expression "(undefined8 *)(param_2 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" { (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" ( (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" { (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (goto_statement "goto LAB_0028dec7;" goto statement_identifier ;) })) (labeled_statement "LAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);" statement_identifier : (expression_statement "uVar4 = thunk_FUN_0049f6a0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_0049f6a0(uVar5)" identifier = (call_expression "thunk_FUN_0049f6a0(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;)) (if_statement "if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" if (parenthesized_expression "((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" ( (binary_expression "(uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar4 + 0x20))" ( (binary_expression "uVar2 <= *(uint *)(uVar4 + 0x20)" identifier <= (pointer_expression "*(uint *)(uVar4 + 0x20)" * (cast_expression "(uint *)(uVar4 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x20)" ( (binary_expression "uVar4 + 0x20" identifier + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" ( (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" identifier = identifier) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" { (labeled_statement "LAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);" statement_identifier : (expression_statement "FUN_0049e340(auVar7._0_8_);" (call_expression "FUN_0049e340(auVar7._0_8_)" identifier (argument_list "(auVar7._0_8_)" ( (field_expression "auVar7._0_8_" identifier . field_identifier) ))) ;)) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar8;" return identifier ;) })) }) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" else (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" { (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" do (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" { (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar3 = *(uint *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar5 + 0x20)" identifier = (pointer_expression "*(uint *)(uVar5 + 0x20)" * (cast_expression "(uint *)(uVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x10)" * (cast_expression "(ulong *)(uVar5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x10)" ( (binary_expression "uVar5 + 0x10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" else (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" { (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar5 + 0x18)" * (cast_expression "(ulong *)(uVar5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }" { (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;" if (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" ( (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0028def7;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" else (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) goto LAB_0028df08;" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (goto_statement "goto LAB_0028df08;" goto statement_identifier ;)) }))) }))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" if (parenthesized_expression "(uVar1 != uVar5)" ( (binary_expression "uVar1 != uVar5" identifier != identifier) )) (compound_statement "{\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" { (expression_statement "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20)" identifier = (binary_expression "uVar2 < *(uint *)(uVar5 + 0x20)" identifier < (pointer_expression "*(uint *)(uVar5 + 0x20)" * (cast_expression "(uint *)(uVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x20)" ( (binary_expression "uVar5 + 0x20" identifier + number_literal) )))))) ;) })) (labeled_statement "LAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" statement_identifier : (expression_statement "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1)" identifier (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" ( identifier , (field_expression "auVar7._0_8_" identifier . field_identifier) , identifier , identifier ))) ;)) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar7;" return identifier ;) })))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (function_definition TYPE (ERROR ( (type_descriptor (sized_type_specifier long TYPE)) , IDENT) (pointer_declarator * IDENT) (ERROR )) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) ))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (return_statement return IDENT ;) })))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (function_definition "FUN_0028de50(long param_1,uint *param_2)\n\n{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" (type_identifier "FUN_0028de50") (ERROR "(long param_1,uint" (( "(") (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (identifier "uint")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (ERROR ")" () ")")) (compound_statement "{\n  ulong uVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  bool bVar6;\n  undefined1 auVar7 [16];\n  undefined1 auVar8 [16];\n  \n  uVar1 = param_1 + 8;\n  auVar7._0_8_ = FUN_0049cb70(0x30);\n  uVar2 = *param_2;\n  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;\n  uVar4 = *(ulong *)(param_1 + 0x10);\n  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);\n  if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }\n  bVar6 = true;\n  if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }\nLAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar7._8_8_ = 1;\n  return auVar7;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "undefined1 auVar7 [16];" (type_identifier "undefined1") (array_declarator "auVar7 [16]" (identifier "auVar7") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar8 [16];" (type_identifier "undefined1") (array_declarator "auVar8 [16]" (identifier "auVar8") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" (identifier "uVar1") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "auVar7._0_8_ = FUN_0049cb70(0x30);" (assignment_expression "auVar7._0_8_ = FUN_0049cb70(0x30)" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_0049cb70(0x30)" (identifier "FUN_0049cb70") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")")))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(uint *)(auVar7._0_8_ + 0x20) = uVar2;" (assignment_expression "*(uint *)(auVar7._0_8_ + 0x20) = uVar2" (pointer_expression "*(uint *)(auVar7._0_8_ + 0x20)" (* "*") (cast_expression "(uint *)(auVar7._0_8_ + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar7._0_8_ + 0x20)" (( "(") (binary_expression "auVar7._0_8_ + 0x20" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar4 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(param_1 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x10)" (* "*") (cast_expression "(ulong *)(param_1 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);" (assignment_expression "*(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2)" (pointer_expression "*(undefined8 *)(auVar7._0_8_ + 0x28)" (* "*") (cast_expression "(undefined8 *)(auVar7._0_8_ + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar7._0_8_ + 0x28)" (( "(") (binary_expression "auVar7._0_8_ + 0x28" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_2 + 2)" (* "*") (cast_expression "(undefined8 *)(param_2 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (uVar4 == 0) {\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }\n  else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = uVar1;\n    if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }\nLAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);\n    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }\n  }" ({ "{") (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" (identifier "uVar5") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x18) == uVar1) {\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) == uVar1)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) == uVar1" (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "uVar1")) () ")")) (compound_statement "{\n      bVar6 = true;\n      goto LAB_0028dec7;\n    }" ({ "{") (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_0028dec7;" (goto "goto") (statement_identifier "LAB_0028dec7") (; ";")) (} "}"))) (labeled_statement "LAB_0028def7:\n    uVar4 = thunk_FUN_0049f6a0(uVar5);" (statement_identifier "LAB_0028def7") (: ":") (expression_statement "uVar4 = thunk_FUN_0049f6a0(uVar5);" (assignment_expression "uVar4 = thunk_FUN_0049f6a0(uVar5)" (identifier "uVar4") (= "=") (call_expression "thunk_FUN_0049f6a0(uVar5)" (identifier "thunk_FUN_0049f6a0") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";"))) (if_statement "if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" (if "if") (parenthesized_expression "((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0))" (( "(") (binary_expression "(uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)" (parenthesized_expression "(uVar2 <= *(uint *)(uVar4 + 0x20))" (( "(") (binary_expression "uVar2 <= *(uint *)(uVar4 + 0x20)" (identifier "uVar2") (<= "<=") (pointer_expression "*(uint *)(uVar4 + 0x20)" (* "*") (cast_expression "(uint *)(uVar4 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x20)" (( "(") (binary_expression "uVar4 + 0x20" (identifier "uVar4") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(uVar4 = uVar5, uVar5 == 0)" (( "(") (comma_expression "uVar4 = uVar5, uVar5 == 0" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (, ",") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);\n      auVar8._8_8_ = 0;\n      auVar8._0_8_ = uVar4;\n      return auVar8;\n    }" ({ "{") (labeled_statement "LAB_0028df08:\n      FUN_0049e340(auVar7._0_8_);" (statement_identifier "LAB_0028df08") (: ":") (expression_statement "FUN_0049e340(auVar7._0_8_);" (call_expression "FUN_0049e340(auVar7._0_8_)" (identifier "FUN_0049e340") (argument_list "(auVar7._0_8_)" (( "(") (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) () ")"))) (; ";"))) (expression_statement "auVar8._8_8_ = 0;" (assignment_expression "auVar8._8_8_ = 0" (field_expression "auVar8._8_8_" (identifier "auVar8") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar8._0_8_ = uVar4;" (assignment_expression "auVar8._0_8_ = uVar4" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return auVar8;" (return "return") (identifier "auVar8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);\n    if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }\n  }" ({ "{") (do_statement "do {\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    } while (uVar4 != 0);" (do "do") (compound_statement "{\n      uVar5 = uVar4;\n      uVar3 = *(uint *)(uVar5 + 0x20);\n      if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }\n    }" ({ "{") (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" (identifier "uVar5") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar3 = *(uint *)(uVar5 + 0x20);" (assignment_expression "uVar3 = *(uint *)(uVar5 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(uVar5 + 0x20)" (* "*") (cast_expression "(uint *)(uVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x20)" (( "(") (binary_expression "uVar5 + 0x20" (identifier "uVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (uVar2 < uVar3) {\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }\n      else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x10);\n      }" ({ "{") (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x10);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x10)" (( "(") (binary_expression "uVar5 + 0x10" (identifier "uVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" (else "else") (compound_statement "{\n        uVar4 = *(ulong *)(uVar5 + 0x18);\n      }" ({ "{") (expression_statement "uVar4 = *(ulong *)(uVar5 + 0x18);" (assignment_expression "uVar4 = *(ulong *)(uVar5 + 0x18)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(uVar5 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar5 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x18)" (( "(") (binary_expression "uVar5 + 0x18" (identifier "uVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (uVar2 < uVar3) {\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }\n    else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;\n    }" ({ "{") (if_statement "if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x18) != uVar5)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x18) != uVar5" (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (identifier "uVar5")) () ")")) (goto_statement "goto LAB_0028def7;" (goto "goto") (statement_identifier "LAB_0028def7") (; ";"))) (} "}")) (else_clause "else {\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" (else "else") (compound_statement "{\n      uVar4 = uVar5;\n      if (uVar2 <= uVar3) goto LAB_0028df08;\n    }" ({ "{") (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (uVar2 <= uVar3) goto LAB_0028df08;" (if "if") (parenthesized_expression "(uVar2 <= uVar3)" (( "(") (binary_expression "uVar2 <= uVar3" (identifier "uVar2") (<= "<=") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_0028df08;" (goto "goto") (statement_identifier "LAB_0028df08") (; ";"))) (} "}")))) (} "}")))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (if_statement "if (uVar1 != uVar5) {\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" (if "if") (parenthesized_expression "(uVar1 != uVar5)" (( "(") (binary_expression "uVar1 != uVar5" (identifier "uVar1") (!= "!=") (identifier "uVar5")) () ")")) (compound_statement "{\n    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);\n  }" ({ "{") (expression_statement "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);" (assignment_expression "bVar6 = uVar2 < *(uint *)(uVar5 + 0x20)" (identifier "bVar6") (= "=") (binary_expression "uVar2 < *(uint *)(uVar5 + 0x20)" (identifier "uVar2") (< "<") (pointer_expression "*(uint *)(uVar5 + 0x20)" (* "*") (cast_expression "(uint *)(uVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x20)" (( "(") (binary_expression "uVar5 + 0x20" (identifier "uVar5") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (} "}"))) (labeled_statement "LAB_0028dec7:\n  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" (statement_identifier "LAB_0028dec7") (: ":") (expression_statement "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);" (call_expression "FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1)" (identifier "FUN_0049f840") (argument_list "(bVar6,auVar7._0_8_,uVar5,uVar1)" (( "(") (identifier "bVar6") (, ",") (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar1") () ")"))) (; ";"))) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auVar7._8_8_ = 1;" (assignment_expression "auVar7._8_8_ = 1" (field_expression "auVar7._8_8_" (identifier "auVar7") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar7;" (return "return") (identifier "auVar7") (; ";")) (} "}")))

/* DWARF original name: _M_emplace_unique<std::pair<unsigned int, (anonymous
   namespace)::Mips16_stub_section<64, false>*> >
   DWARF original prototype:
   pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_bool>
   _M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>(_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::Mips16_stub_section<64,_false>*>_>_>
   * this, pair<unsigned_int,_(anonymous_namespace)::Mips16_stub_section<64,_false>*> * __args#0) */

pair<std::_Rb_tree_iterator<std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>_>,var_3>
 __thiscall
std::
_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>_>_>
::
_M_emplace_unique<std::pair<unsigned_int,_(anonymous_namespace)::var_1<64,var_2>*>_>
          (_Rb_tree<unsigned_int,_std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>,_std::_Select1st<std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>_>,_std::less<unsigned_int>,_std::allocator<std::pair<unsigned_int_const,_(anonymous_namespace)::var_1<64,var_2>*>_>_>
           *this,pair<unsigned_int,_(anonymous_namespace)::var_1<64,var_2>*>
                 *__args_0)

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


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

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

{
  ulong uVar1;
  uint uVar2;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  bool bVar6;
  undefined1 auVar7 [16];
  undefined1 auVar8 [16];
  
  uVar1 = param_1 + 8;
  auVar7._0_8_ = FUN_0049cb70(0x30);
  uVar2 = *param_2;
  *(uint *)(auVar7._0_8_ + 0x20) = uVar2;
  uVar4 = *(ulong *)(param_1 + 0x10);
  *(undefined8 *)(auVar7._0_8_ + 0x28) = *(undefined8 *)(param_2 + 2);
  if (uVar4 == 0) {
    uVar5 = uVar1;
    if (*(ulong *)(param_1 + 0x18) == uVar1) {
      bVar6 = true;
      goto LAB_0028dec7;
    }
LAB_0028def7:
    uVar4 = thunk_FUN_0049f6a0(uVar5);
    if ((uVar2 <= *(uint *)(uVar4 + 0x20)) || (uVar4 = uVar5, uVar5 == 0)) {
LAB_0028df08:
      FUN_0049e340(auVar7._0_8_);
      auVar8._8_8_ = 0;
      auVar8._0_8_ = uVar4;
      return auVar8;
    }
  }
  else {
    do {
      uVar5 = uVar4;
      uVar3 = *(uint *)(uVar5 + 0x20);
      if (uVar2 < uVar3) {
        uVar4 = *(ulong *)(uVar5 + 0x10);
      }
      else {
        uVar4 = *(ulong *)(uVar5 + 0x18);
      }
    } while (uVar4 != 0);
    if (uVar2 < uVar3) {
      if (*(ulong *)(param_1 + 0x18) != uVar5) goto LAB_0028def7;
    }
    else {
      uVar4 = uVar5;
      if (uVar2 <= uVar3) goto LAB_0028df08;
    }
  }
  bVar6 = true;
  if (uVar1 != uVar5) {
    bVar6 = uVar2 < *(uint *)(uVar5 + 0x20);
  }
LAB_0028dec7:
  FUN_0049f840(bVar6,auVar7._0_8_,uVar5,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar7._8_8_ = 1;
  return auVar7;
}

