
/* DWARF original name: _M_insert_unique<gold::Cie* const&>
   DWARF original prototype: pair<std::_Rb_tree_iterator<gold::Cie*>,_bool>
   _M_insert_unique<gold::Cie*_const&>(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
   * this, Cie * * __v) */

pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> __thiscall
std::
_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
::_M_insert_unique<gold::Cie*_const&>
          (_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
           *this,Cie **__v)

{
  _Rb_tree_header *p_Var1;
  size_t *psVar2;
  Cie *cie1;
  Cie *cie2;
  bool bVar3;
  _Rb_tree_node_base *p_Var4;
  _Rb_tree_node_base *p_Var5;
  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar6;
  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar7;
  
  p_Var1 = &(this->_M_impl).super__Rb_tree_header;
  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (p_Var4 == (_Rb_tree_node_base *)0x0) {
    p_Var5 = &p_Var1->_M_header;
    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      bVar3 = true;
      goto LAB_0024841a;
    }
LAB_00248466:
    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);
    bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);
joined_r0x00248409:
    if (!bVar3) {
      pVar7._8_8_ = 0;
      pVar7.first._M_node = p_Var4;
      return pVar7;
    }
  }
  else {
    cie1 = *__v;
    do {
      p_Var5 = p_Var4;
      cie2 = *(Cie **)(p_Var5 + 1);
      bVar3 = gold::operator<(cie1,cie2);
      if (bVar3) {
        p_Var4 = p_Var5->_M_left;
      }
      else {
        p_Var4 = p_Var5->_M_right;
      }
    } while (p_Var4 != (_Base_ptr)0x0);
    if (!bVar3) {
      bVar3 = gold::operator<(cie2,cie1);
      p_Var4 = p_Var5;
      goto joined_r0x00248409;
    }
    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;
  }
  bVar3 = true;
  if (p_Var1 != (_Rb_tree_header *)p_Var5) {
    bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));
  }
LAB_0024841a:
  pVar6.first._M_node = (_Base_ptr)operator_new(0x28);
  *(Cie **)(pVar6.first._M_node + 1) = *__v;
  _Rb_tree_insert_and_rebalance(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  pVar6._8_8_ = 1;
  return pVar6;
}



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

{
  ulong uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  undefined1 uVar5;
  ulong uVar6;
  ulong uVar7;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  
  uVar1 = param_1 + 8;
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar7 = uVar1;
    if (uVar1 == *(ulong *)(param_1 + 0x18)) {
      uVar5 = 1;
      goto LAB_0024841a;
    }
LAB_00248466:
    uVar6 = thunk_FUN_00278080(uVar7);
    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);
joined_r0x00248409:
    if (cVar4 == '\0') {
      auVar9._8_8_ = 0;
      auVar9._0_8_ = uVar6;
      return auVar9;
    }
  }
  else {
    uVar2 = *param_2;
    uVar6 = *(ulong *)(param_1 + 0x10);
    do {
      uVar7 = uVar6;
      uVar3 = *(undefined8 *)(uVar7 + 0x20);
      cVar4 = FUN_00247740(uVar2,uVar3);
      if (cVar4 == '\0') {
        uVar6 = *(ulong *)(uVar7 + 0x18);
      }
      else {
        uVar6 = *(ulong *)(uVar7 + 0x10);
      }
    } while (uVar6 != 0);
    if (cVar4 == '\0') {
      cVar4 = FUN_00247740(uVar3,uVar2);
      uVar6 = uVar7;
      goto joined_r0x00248409;
    }
    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;
  }
  uVar5 = 1;
  if (uVar1 != uVar7) {
    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));
  }
LAB_0024841a:
  auVar8._0_8_ = FUN_00275550(0x28);
  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;
  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar8._8_8_ = 1;
  return auVar8;
}


PUSH R15
PUSH R14
LEA R14,[RDI + 0x8]
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x10]
TEST RBX,RBX
JZ 0x002484c0
MOV R15,qword ptr [RSI]
JMP 0x002483dc
MOV RDX,qword ptr [RBX + 0x10]
TEST RDX,RDX
JZ 0x002483f8
MOV RBX,RDX
MOV R12,qword ptr [RBX + 0x20]
MOV RDI,R15
MOV RSI,R12
CALL 0x00247740
TEST AL,AL
JNZ 0x002483d0
MOV RDX,qword ptr [RBX + 0x18]
TEST RDX,RDX
JNZ 0x002483d9
TEST AL,AL
JNZ 0x00248460
MOV RSI,R15
MOV RDI,R12
CALL 0x00247740
TEST AL,AL
JZ 0x00248485
MOV R15D,0x1
CMP R14,RBX
JNZ 0x002484a0
MOV EDI,0x28
CALL 0x00275550
MOV RDX,RBX
MOV RCX,R14
MOV EDI,R15D
MOV R12,RAX
MOV RAX,qword ptr [R13]
MOV RSI,R12
MOV qword ptr [R12 + 0x20],RAX
CALL 0x00278220
ADD qword ptr [RBP + 0x28],0x1
ADD RSP,0x8
MOV RAX,R12
POP RBX
MOV EDX,0x1
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP RBX,qword ptr [RBP + 0x18]
JZ 0x0024840b
MOV RDI,RBX
CALL 0x00278140
MOV RSI,qword ptr [R13]
MOV RDI,qword ptr [RAX + 0x20]
MOV R12,RAX
CALL 0x00247740
TEST AL,AL
JNZ 0x0024840b
MOV RBX,R12
ADD RSP,0x8
MOV RAX,RBX
XOR EDX,EDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,qword ptr [RBX + 0x20]
MOV RDI,qword ptr [R13]
CALL 0x00247740
MOVZX R15D,AL
JMP 0x0024841a
MOV RBX,R14
CMP R14,qword ptr [RDI + 0x18]
JNZ 0x00248466
MOV R15D,0x1
JMP 0x0024841a
(translation_unit "undefined1  [16] FUN_002483a0(long param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  undefined1 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }\n  uVar5 = 1;\n  if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }\nLAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002483a0(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  undefined1 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }\n  uVar5 = 1;\n  if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }\nLAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }" { (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" if (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" identifier == (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0024841a;" goto statement_identifier ;) })) (labeled_statement "LAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_00278080(uVar7);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar7)" identifier = (call_expression "thunk_FUN_00278080(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (expression_statement "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);" (assignment_expression "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" identifier = (call_expression "FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" identifier (argument_list "(*(undefined8 *)(uVar6 + 0x20),*param_2)" ( (pointer_expression "*(undefined8 *)(uVar6 + 0x20)" * (cast_expression "(undefined8 *)(uVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) )))) , (pointer_expression "*param_2" * identifier) )))) ;) (labeled_statement "joined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" statement_identifier : (if_statement "if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" { (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar9._0_8_ = uVar6;" (assignment_expression "auVar9._0_8_ = uVar6" (field_expression "auVar9._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar9;" return identifier ;) }))) }) (else_clause "else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" else (compound_statement "{\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = *(undefined8 *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(uVar7 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" * (cast_expression "(undefined8 *)(uVar7 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "cVar4 = FUN_00247740(uVar2,uVar3);" (assignment_expression "cVar4 = FUN_00247740(uVar2,uVar3)" identifier = (call_expression "FUN_00247740(uVar2,uVar3)" identifier (argument_list "(uVar2,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" else (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 0x10" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (if_statement "if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" { (expression_statement "cVar4 = FUN_00247740(uVar3,uVar2);" (assignment_expression "cVar4 = FUN_00247740(uVar3,uVar2)" identifier = (call_expression "FUN_00247740(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (goto_statement "goto joined_r0x00248409;" goto statement_identifier ;) })) (if_statement "if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;" if (parenthesized_expression "(uVar7 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar7 != *(ulong *)(param_1 + 0x18)" identifier != (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (goto_statement "goto LAB_00248466;" goto statement_identifier ;)) }))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (if_statement "if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" if (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) (compound_statement "{\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" { (expression_statement "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));" (assignment_expression "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" identifier = (call_expression "FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" identifier (argument_list "(*param_2,*(undefined8 *)(uVar7 + 0x20))" ( (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" * (cast_expression "(undefined8 *)(uVar7 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) )))) )))) ;) })) (labeled_statement "LAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);" statement_identifier : (expression_statement "auVar8._0_8_ = FUN_00275550(0x28);" (assignment_expression "auVar8._0_8_ = FUN_00275550(0x28)" (field_expression "auVar8._0_8_" identifier . field_identifier) = (call_expression "FUN_00275550(0x28)" identifier (argument_list "(0x28)" ( number_literal )))) ;)) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);" (call_expression "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1)" identifier (argument_list "(uVar5,auVar8._0_8_,uVar7,uVar1)" ( identifier , (field_expression "auVar8._0_8_" identifier . field_identifier) , identifier , identifier ))) ;) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit "/* DWARF original name: _M_insert_unique<gold::Cie* const&>\n   DWARF original prototype: pair<std::_Rb_tree_iterator<gold::Cie*>,_bool>\n   _M_insert_unique<gold::Cie*_const&>(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n   * this, Cie * * __v) */\n\npair<std::_Rb_tree_iterator<gold::Cie*>,_bool> __thiscall\nstd::\n_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n::_M_insert_unique<gold::Cie*_const&>\n          (_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n           *this,Cie **__v)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  Cie *cie1;\n  Cie *cie2;\n  bool bVar3;\n  _Rb_tree_node_base *p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar6;\n  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar7;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar3 = true;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);\njoined_r0x00248409:\n    if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }\n  }\n  else {\n    cie1 = *__v;\n    do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }\n    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;\n  }\n  bVar3 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var5) {\n    bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));\n  }\nLAB_0024841a:\n  pVar6.first._M_node = (_Base_ptr)operator_new(0x28);\n  *(Cie **)(pVar6.first._M_node + 1) = *__v;\n  _Rb_tree_insert_and_rebalance(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar6._8_8_ = 1;\n  return pVar6;\n}\n\n" comment (ERROR "pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> __thiscall\nstd::\n_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n::_M_insert_unique<gold::Cie*_const&>\n          (_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n           *this,Cie **__v)" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<gold" identifier < identifier) : : (binary_expression "Cie*>,_bool> __thiscall\nstd::\n_Rb_tree<gold" (binary_expression "Cie*>,_bool> __thiscall" (binary_expression "Cie*>,_bool" identifier * (ERROR ">," > ,) identifier) > identifier) (ERROR "std::\n_Rb_tree" identifier : : identifier) < identifier) : : (binary_expression "Cie*,_gold" identifier * (ERROR "," ,) identifier) : : (binary_expression "Cie*,_std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (binary_expression "Cie*>,_gold" identifier * (ERROR ">," > ,) identifier) : : (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n::_M_insert_unique<gold" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n::_M_insert_unique" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_" identifier (ERROR "::Cie_less,_std::allocator<gold::Cie*" : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier *) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (binary_expression "Cie*_const&>\n          (_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n           *this,Cie **__v)" (binary_expression "Cie*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n           *this,Cie **__v)" ( (ERROR "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::" (comma_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold" (binary_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold" (binary_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std" (binary_expression "_Rb_tree<gold::Cie*,_gold" (binary_expression "_Rb_tree<gold" identifier < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::_Identity" : : identifier) < identifier) (ERROR "::Cie*>" : : identifier * >) , identifier) : : identifier : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (comma_expression "Cie*>_>\n           *this,Cie **__v" (binary_expression "Cie*>_>\n           *this" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > (pointer_expression "*this" * identifier)) , (binary_expression "Cie **__v" identifier * (pointer_expression "*__v" * identifier))) )))) (compound_statement "{\n  _Rb_tree_header *p_Var1;\n  size_t *psVar2;\n  Cie *cie1;\n  Cie *cie2;\n  bool bVar3;\n  _Rb_tree_node_base *p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar6;\n  pair<std::_Rb_tree_iterator<gold::Cie*>,_bool> pVar7;\n  \n  p_Var1 = &(this->_M_impl).super__Rb_tree_header;\n  p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;\n  if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar3 = true;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);\njoined_r0x00248409:\n    if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }\n  }\n  else {\n    cie1 = *__v;\n    do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }\n    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;\n  }\n  bVar3 = true;\n  if (p_Var1 != (_Rb_tree_header *)p_Var5) {\n    bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));\n  }\nLAB_0024841a:\n  pVar6.first._M_node = (_Base_ptr)operator_new(0x28);\n  *(Cie **)(pVar6.first._M_node + 1) = *__v;\n  _Rb_tree_insert_and_rebalance(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header);\n  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;\n  *psVar2 = *psVar2 + 1;\n  pVar6._8_8_ = 1;\n  return pVar6;\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 "Cie *cie1;" type_identifier (pointer_declarator "*cie1" * identifier) ;) (declaration "Cie *cie2;" type_identifier (pointer_declarator "*cie2" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "_Rb_tree_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (ERROR "pair<std::_Rb_tree_iterator<gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<gold" identifier < identifier) : :) (expression_statement "Cie*>,_bool> pVar6;" (binary_expression "Cie*>,_bool> pVar6" (binary_expression "Cie*>,_bool" identifier * (ERROR ">," > ,) identifier) > identifier) ;) (ERROR "pair<std::_Rb_tree_iterator<gold::" (binary_expression "pair<std" identifier < identifier) : : (binary_expression "_Rb_tree_iterator<gold" identifier < identifier) : :) (expression_statement "Cie*>,_bool> pVar7;" (binary_expression "Cie*>,_bool> pVar7" (binary_expression "Cie*>,_bool" 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 "p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_parent" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (p_Var4 == (_Rb_tree_node_base *)0x0) {\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar3 = true;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);\njoined_r0x00248409:\n    if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }\n  }\n  else {\n    cie1 = *__v;\n    do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }\n    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;\n  }" if (parenthesized_expression "(p_Var4 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var4 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var5 = &p_Var1->_M_header;\n    if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar3 = true;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);\n    bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);\njoined_r0x00248409:\n    if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }\n  }" { (expression_statement "p_Var5 = &p_Var1->_M_header;" (assignment_expression "p_Var5 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {\n      bVar3 = true;\n      goto LAB_0024841a;\n    }" if (parenthesized_expression "(p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var1 == (_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left" identifier == (cast_expression "(_Rb_tree_header *)(this->_M_impl).super__Rb_tree_header._M_header._M_left" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) )) (compound_statement "{\n      bVar3 = true;\n      goto LAB_0024841a;\n    }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (goto_statement "goto LAB_0024841a;" goto statement_identifier ;) })) (labeled_statement "LAB_00248466:\n    p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);" statement_identifier : (expression_statement "p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5);" (assignment_expression "p_Var4 = (_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5)" identifier = (cast_expression "(_Rb_tree_node_base *)_Rb_tree_decrement(p_Var5)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Rb_tree_decrement(p_Var5)" identifier (argument_list "(p_Var5)" ( identifier ))))) ;)) (expression_statement "bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v);" (binary_expression "bVar3 = gold::operator<(*(Cie **)(p_Var4 + 1),*__v)" (assignment_expression "bVar3 = gold" identifier = identifier) (ERROR "::operator" : : identifier) < (parenthesized_expression "(*(Cie **)(p_Var4 + 1),*__v)" ( (comma_expression "*(Cie **)(p_Var4 + 1),*__v" (pointer_expression "*(Cie **)(p_Var4 + 1)" * (cast_expression "(Cie **)(p_Var4 + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var4 + 1)" ( (binary_expression "p_Var4 + 1" identifier + number_literal) )))) , (pointer_expression "*__v" * identifier)) ))) ;) (labeled_statement "joined_r0x00248409:\n    if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }" statement_identifier : (if_statement "if (!bVar3) {\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n      pVar7._8_8_ = 0;\n      pVar7.first._M_node = p_Var4;\n      return pVar7;\n    }" { (expression_statement "pVar7._8_8_ = 0;" (assignment_expression "pVar7._8_8_ = 0" (field_expression "pVar7._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "pVar7.first._M_node = p_Var4;" (assignment_expression "pVar7.first._M_node = p_Var4" (field_expression "pVar7.first._M_node" (field_expression "pVar7.first" identifier . field_identifier) . field_identifier) = identifier) ;) (return_statement "return pVar7;" return identifier ;) }))) }) (else_clause "else {\n    cie1 = *__v;\n    do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }\n    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;\n  }" else (compound_statement "{\n    cie1 = *__v;\n    do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);\n    if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }\n    if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;\n  }" { (expression_statement "cie1 = *__v;" (assignment_expression "cie1 = *__v" identifier = (pointer_expression "*__v" * identifier)) ;) (do_statement "do {\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    } while (p_Var4 != (_Base_ptr)0x0);" do (compound_statement "{\n      p_Var5 = p_Var4;\n      cie2 = *(Cie **)(p_Var5 + 1);\n      bVar3 = gold::operator<(cie1,cie2);\n      if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }\n    }" { (expression_statement "p_Var5 = p_Var4;" (assignment_expression "p_Var5 = p_Var4" identifier = identifier) ;) (expression_statement "cie2 = *(Cie **)(p_Var5 + 1);" (assignment_expression "cie2 = *(Cie **)(p_Var5 + 1)" identifier = (pointer_expression "*(Cie **)(p_Var5 + 1)" * (cast_expression "(Cie **)(p_Var5 + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = gold::operator<(cie1,cie2);" (binary_expression "bVar3 = gold::operator<(cie1,cie2)" (assignment_expression "bVar3 = gold" identifier = identifier) (ERROR "::operator" : : identifier) < (parenthesized_expression "(cie1,cie2)" ( (comma_expression "cie1,cie2" identifier , identifier) ))) ;) (if_statement "if (bVar3) {\n        p_Var4 = p_Var5->_M_left;\n      }\n      else {\n        p_Var4 = p_Var5->_M_right;\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        p_Var4 = p_Var5->_M_left;\n      }" { (expression_statement "p_Var4 = p_Var5->_M_left;" (assignment_expression "p_Var4 = p_Var5->_M_left" identifier = (field_expression "p_Var5->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else {\n        p_Var4 = p_Var5->_M_right;\n      }" else (compound_statement "{\n        p_Var4 = p_Var5->_M_right;\n      }" { (expression_statement "p_Var4 = p_Var5->_M_right;" (assignment_expression "p_Var4 = p_Var5->_M_right" identifier = (field_expression "p_Var5->_M_right" identifier -> field_identifier)) ;) }))) }) while (parenthesized_expression "(p_Var4 != (_Base_ptr)0x0)" ( (binary_expression "p_Var4 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (if_statement "if (!bVar3) {\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n      bVar3 = gold::operator<(cie2,cie1);\n      p_Var4 = p_Var5;\n      goto joined_r0x00248409;\n    }" { (expression_statement "bVar3 = gold::operator<(cie2,cie1);" (binary_expression "bVar3 = gold::operator<(cie2,cie1)" (assignment_expression "bVar3 = gold" identifier = identifier) (ERROR "::operator" : : identifier) < (parenthesized_expression "(cie2,cie1)" ( (comma_expression "cie2,cie1" identifier , identifier) ))) ;) (expression_statement "p_Var4 = p_Var5;" (assignment_expression "p_Var4 = p_Var5" identifier = identifier) ;) (goto_statement "goto joined_r0x00248409;" goto statement_identifier ;) })) (if_statement "if (p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;" if (parenthesized_expression "(p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left)" ( (binary_expression "p_Var5 != (this->_M_impl).super__Rb_tree_header._M_header._M_left" identifier != (field_expression "(this->_M_impl).super__Rb_tree_header._M_header._M_left" (field_expression "(this->_M_impl).super__Rb_tree_header._M_header" (field_expression "(this->_M_impl).super__Rb_tree_header" (parenthesized_expression "(this->_M_impl)" ( (field_expression "this->_M_impl" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) )) (goto_statement "goto LAB_00248466;" goto statement_identifier ;)) }))) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (if_statement "if (p_Var1 != (_Rb_tree_header *)p_Var5) {\n    bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));\n  }" if (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var5)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var5" identifier != (cast_expression "(_Rb_tree_header *)p_Var5" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));\n  }" { (expression_statement "bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1));" (binary_expression "bVar3 = gold::operator<(*__v,*(Cie **)(p_Var5 + 1))" (assignment_expression "bVar3 = gold" identifier = identifier) (ERROR "::operator" : : identifier) < (parenthesized_expression "(*__v,*(Cie **)(p_Var5 + 1))" ( (comma_expression "*__v,*(Cie **)(p_Var5 + 1)" (pointer_expression "*__v" * identifier) , (pointer_expression "*(Cie **)(p_Var5 + 1)" * (cast_expression "(Cie **)(p_Var5 + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var5 + 1)" ( (binary_expression "p_Var5 + 1" identifier + number_literal) ))))) ))) ;) })) (labeled_statement "LAB_0024841a:\n  pVar6.first._M_node = (_Base_ptr)operator_new(0x28);" statement_identifier : (expression_statement "pVar6.first._M_node = (_Base_ptr)operator_new(0x28);" (assignment_expression "pVar6.first._M_node = (_Base_ptr)operator_new(0x28)" (field_expression "pVar6.first._M_node" (field_expression "pVar6.first" identifier . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)operator_new(0x28)" ( (type_descriptor "_Base_ptr" type_identifier) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;)) (expression_statement "*(Cie **)(pVar6.first._M_node + 1) = *__v;" (assignment_expression "*(Cie **)(pVar6.first._M_node + 1) = *__v" (pointer_expression "*(Cie **)(pVar6.first._M_node + 1)" * (cast_expression "(Cie **)(pVar6.first._M_node + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pVar6.first._M_node + 1)" ( (binary_expression "pVar6.first._M_node + 1" (field_expression "pVar6.first._M_node" (field_expression "pVar6.first" identifier . field_identifier) . field_identifier) + number_literal) )))) = (pointer_expression "*__v" * identifier)) ;) (expression_statement "_Rb_tree_insert_and_rebalance(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header);" (call_expression "_Rb_tree_insert_and_rebalance(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header)" identifier (argument_list "(bVar3,pVar6.first._M_node,p_Var5,&p_Var1->_M_header)" ( identifier , (field_expression "pVar6.first._M_node" (field_expression "pVar6.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 "pVar6._8_8_ = 1;" (assignment_expression "pVar6._8_8_ = 1" (field_expression "pVar6._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return pVar6;" return identifier ;) }))
(translation_unit "undefined1  [16] FUN_002483a0(long param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  undefined1 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }\n  uVar5 = 1;\n  if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }\nLAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (macro_type_specifier "FUN_002483a0(long param_1,undefined8 *param_2)" identifier ( (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" long type_identifier)) , (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *))) (type_descriptor "param_2" type_identifier) )) ; (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  undefined1 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }\n  uVar5 = 1;\n  if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }\nLAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar9 [16];" type_identifier (array_declarator "auVar9 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" ( (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }" { (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" if (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" identifier == (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0024841a;" goto statement_identifier ;) })) (labeled_statement "LAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);" statement_identifier : (expression_statement "uVar6 = thunk_FUN_00278080(uVar7);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar7)" identifier = (call_expression "thunk_FUN_00278080(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (expression_statement "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);" (assignment_expression "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" identifier = (call_expression "FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" identifier (argument_list "(*(undefined8 *)(uVar6 + 0x20),*param_2)" ( (pointer_expression "*(undefined8 *)(uVar6 + 0x20)" * (cast_expression "(undefined8 *)(uVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20)" ( (binary_expression "uVar6 + 0x20" identifier + number_literal) )))) , (pointer_expression "*param_2" * identifier) )))) ;) (labeled_statement "joined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" statement_identifier : (if_statement "if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" { (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar9._0_8_ = uVar6;" (assignment_expression "auVar9._0_8_ = uVar6" (field_expression "auVar9._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar9;" return identifier ;) }))) }) (else_clause "else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" else (compound_statement "{\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x10)" * (cast_expression "(ulong *)(param_1 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);" do (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    }" { (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = *(undefined8 *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(uVar7 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" * (cast_expression "(undefined8 *)(uVar7 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "cVar4 = FUN_00247740(uVar2,uVar3);" (assignment_expression "cVar4 = FUN_00247740(uVar2,uVar3)" identifier = (call_expression "FUN_00247740(uVar2,uVar3)" identifier (argument_list "(uVar2,uVar3)" ( identifier , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x18)" * (cast_expression "(ulong *)(uVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x18)" ( (binary_expression "uVar7 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" else (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" { (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" identifier = (pointer_expression "*(ulong *)(uVar7 + 0x10)" * (cast_expression "(ulong *)(uVar7 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x10)" ( (binary_expression "uVar7 + 0x10" identifier + number_literal) ))))) ;) }))) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (if_statement "if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" { (expression_statement "cVar4 = FUN_00247740(uVar3,uVar2);" (assignment_expression "cVar4 = FUN_00247740(uVar3,uVar2)" identifier = (call_expression "FUN_00247740(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" identifier = identifier) ;) (goto_statement "goto joined_r0x00248409;" goto statement_identifier ;) })) (if_statement "if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;" if (parenthesized_expression "(uVar7 != *(ulong *)(param_1 + 0x18))" ( (binary_expression "uVar7 != *(ulong *)(param_1 + 0x18)" identifier != (pointer_expression "*(ulong *)(param_1 + 0x18)" * (cast_expression "(ulong *)(param_1 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) (goto_statement "goto LAB_00248466;" goto statement_identifier ;)) }))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (if_statement "if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" if (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) (compound_statement "{\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" { (expression_statement "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));" (assignment_expression "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" identifier = (call_expression "FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" identifier (argument_list "(*param_2,*(undefined8 *)(uVar7 + 0x20))" ( (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" * (cast_expression "(undefined8 *)(uVar7 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + 0x20)" ( (binary_expression "uVar7 + 0x20" identifier + number_literal) )))) )))) ;) })) (labeled_statement "LAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);" statement_identifier : (expression_statement "auVar8._0_8_ = FUN_00275550(0x28);" (assignment_expression "auVar8._0_8_ = FUN_00275550(0x28)" (field_expression "auVar8._0_8_" identifier . field_identifier) = (call_expression "FUN_00275550(0x28)" identifier (argument_list "(0x28)" ( number_literal )))) ;)) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" * (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auVar8._0_8_ + 0x20)" ( (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" identifier . field_identifier) + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);" (call_expression "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1)" identifier (argument_list "(uVar5,auVar8._0_8_,uVar7,uVar1)" ( identifier , (field_expression "auVar8._0_8_" identifier . field_identifier) , identifier , identifier ))) ;) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" identifier . field_identifier) = number_literal) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (macro_type_specifier IDENT ( (ERROR (type_descriptor (sized_type_specifier long TYPE)) , (type_descriptor TYPE (abstract_pointer_declarator *))) (type_descriptor TYPE) )) ; (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration 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)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * IDENT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( LIT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (return_statement return IDENT ;) }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (macro_type_specifier "FUN_002483a0(long param_1,undefined8 *param_2)" (identifier "FUN_002483a0") (( "(") (ERROR "long param_1,undefined8 *" (type_descriptor "long param_1" (sized_type_specifier "long param_1" (long "long") (type_identifier "param_1"))) (, ",") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*")))) (type_descriptor "param_2" (type_identifier "param_2")) () ")")) (; "") (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  undefined1 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined1 auVar9 [16];\n  \n  uVar1 = param_1 + 8;\n  if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }\n  uVar5 = 1;\n  if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }\nLAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);\n  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;\n  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);\n  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;\n  auVar8._8_8_ = 1;\n  return auVar8;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "undefined1 uVar5;" (type_identifier "undefined1") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined1 auVar8 [16];" (type_identifier "undefined1") (array_declarator "auVar8 [16]" (identifier "auVar8") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar9 [16];" (type_identifier "undefined1") (array_declarator "auVar9 [16]" (identifier "auVar9") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "uVar1 = param_1 + 8;" (assignment_expression "uVar1 = param_1 + 8" (identifier "uVar1") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x10) == 0) {\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }\n  else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x10) == 0)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x10) == 0" (pointer_expression "*(ulong *)(param_1 + 0x10)" (* "*") (cast_expression "(ulong *)(param_1 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = uVar1;\n    if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }\nLAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);\n    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);\njoined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }\n  }" ({ "{") (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" (identifier "uVar7") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 == *(ulong *)(param_1 + 0x18)) {\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" (if "if") (parenthesized_expression "(uVar1 == *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar1 == *(ulong *)(param_1 + 0x18)" (identifier "uVar1") (== "==") (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n      uVar5 = 1;\n      goto LAB_0024841a;\n    }" ({ "{") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0024841a;" (goto "goto") (statement_identifier "LAB_0024841a") (; ";")) (} "}"))) (labeled_statement "LAB_00248466:\n    uVar6 = thunk_FUN_00278080(uVar7);" (statement_identifier "LAB_00248466") (: ":") (expression_statement "uVar6 = thunk_FUN_00278080(uVar7);" (assignment_expression "uVar6 = thunk_FUN_00278080(uVar7)" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_00278080(uVar7)" (identifier "thunk_FUN_00278080") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";"))) (expression_statement "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);" (assignment_expression "cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" (identifier "cVar4") (= "=") (call_expression "FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2)" (identifier "FUN_00247740") (argument_list "(*(undefined8 *)(uVar6 + 0x20),*param_2)" (( "(") (pointer_expression "*(undefined8 *)(uVar6 + 0x20)" (* "*") (cast_expression "(undefined8 *)(uVar6 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x20)" (( "(") (binary_expression "uVar6 + 0x20" (identifier "uVar6") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")))) (; ";")) (labeled_statement "joined_r0x00248409:\n    if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" (statement_identifier "joined_r0x00248409") (: ":") (if_statement "if (cVar4 == '\0') {\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      auVar9._8_8_ = 0;\n      auVar9._0_8_ = uVar6;\n      return auVar9;\n    }" ({ "{") (expression_statement "auVar9._8_8_ = 0;" (assignment_expression "auVar9._8_8_ = 0" (field_expression "auVar9._8_8_" (identifier "auVar9") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar9._0_8_ = uVar6;" (assignment_expression "auVar9._0_8_ = uVar6" (field_expression "auVar9._0_8_" (identifier "auVar9") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar6")) (; ";")) (return_statement "return auVar9;" (return "return") (identifier "auVar9") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" (else "else") (compound_statement "{\n    uVar2 = *param_2;\n    uVar6 = *(ulong *)(param_1 + 0x10);\n    do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);\n    if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }\n    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;\n  }" ({ "{") (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar6 = *(ulong *)(param_1 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(param_1 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x10)" (* "*") (cast_expression "(ulong *)(param_1 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (do_statement "do {\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    } while (uVar6 != 0);" (do "do") (compound_statement "{\n      uVar7 = uVar6;\n      uVar3 = *(undefined8 *)(uVar7 + 0x20);\n      cVar4 = FUN_00247740(uVar2,uVar3);\n      if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }\n    }" ({ "{") (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(uVar7 + 0x20);" (assignment_expression "uVar3 = *(undefined8 *)(uVar7 + 0x20)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" (* "*") (cast_expression "(undefined8 *)(uVar7 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x20)" (( "(") (binary_expression "uVar7 + 0x20" (identifier "uVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "cVar4 = FUN_00247740(uVar2,uVar3);" (assignment_expression "cVar4 = FUN_00247740(uVar2,uVar3)" (identifier "cVar4") (= "=") (call_expression "FUN_00247740(uVar2,uVar3)" (identifier "FUN_00247740") (argument_list "(uVar2,uVar3)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar3") () ")")))) (; ";")) (if_statement "if (cVar4 == '\0') {\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }\n      else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x18);\n      }" ({ "{") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x18);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x18)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x18)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x18)" (( "(") (binary_expression "uVar7 + 0x18" (identifier "uVar7") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" (else "else") (compound_statement "{\n        uVar6 = *(ulong *)(uVar7 + 0x10);\n      }" ({ "{") (expression_statement "uVar6 = *(ulong *)(uVar7 + 0x10);" (assignment_expression "uVar6 = *(ulong *)(uVar7 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(uVar7 + 0x10)" (* "*") (cast_expression "(ulong *)(uVar7 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x10)" (( "(") (binary_expression "uVar7 + 0x10" (identifier "uVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (cVar4 == '\0') {\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      cVar4 = FUN_00247740(uVar3,uVar2);\n      uVar6 = uVar7;\n      goto joined_r0x00248409;\n    }" ({ "{") (expression_statement "cVar4 = FUN_00247740(uVar3,uVar2);" (assignment_expression "cVar4 = FUN_00247740(uVar3,uVar2)" (identifier "cVar4") (= "=") (call_expression "FUN_00247740(uVar3,uVar2)" (identifier "FUN_00247740") (argument_list "(uVar3,uVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "uVar6 = uVar7;" (assignment_expression "uVar6 = uVar7" (identifier "uVar6") (= "=") (identifier "uVar7")) (; ";")) (goto_statement "goto joined_r0x00248409;" (goto "goto") (statement_identifier "joined_r0x00248409") (; ";")) (} "}"))) (if_statement "if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;" (if "if") (parenthesized_expression "(uVar7 != *(ulong *)(param_1 + 0x18))" (( "(") (binary_expression "uVar7 != *(ulong *)(param_1 + 0x18)" (identifier "uVar7") (!= "!=") (pointer_expression "*(ulong *)(param_1 + 0x18)" (* "*") (cast_expression "(ulong *)(param_1 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (goto_statement "goto LAB_00248466;" (goto "goto") (statement_identifier "LAB_00248466") (; ";"))) (} "}")))) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (if_statement "if (uVar1 != uVar7) {\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" (if "if") (parenthesized_expression "(uVar1 != uVar7)" (( "(") (binary_expression "uVar1 != uVar7" (identifier "uVar1") (!= "!=") (identifier "uVar7")) () ")")) (compound_statement "{\n    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));\n  }" ({ "{") (expression_statement "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));" (assignment_expression "uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" (identifier "uVar5") (= "=") (call_expression "FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20))" (identifier "FUN_00247740") (argument_list "(*param_2,*(undefined8 *)(uVar7 + 0x20))" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (pointer_expression "*(undefined8 *)(uVar7 + 0x20)" (* "*") (cast_expression "(undefined8 *)(uVar7 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 + 0x20)" (( "(") (binary_expression "uVar7 + 0x20" (identifier "uVar7") (+ "+") (number_literal "0x20")) () ")")))) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_0024841a:\n  auVar8._0_8_ = FUN_00275550(0x28);" (statement_identifier "LAB_0024841a") (: ":") (expression_statement "auVar8._0_8_ = FUN_00275550(0x28);" (assignment_expression "auVar8._0_8_ = FUN_00275550(0x28)" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "FUN_00275550(0x28)" (identifier "FUN_00275550") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")")))) (; ";"))) (expression_statement "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;" (assignment_expression "*(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2" (pointer_expression "*(undefined8 *)(auVar8._0_8_ + 0x20)" (* "*") (cast_expression "(undefined8 *)(auVar8._0_8_ + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auVar8._0_8_ + 0x20)" (( "(") (binary_expression "auVar8._0_8_ + 0x20" (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);" (call_expression "FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1)" (identifier "FUN_00278220") (argument_list "(uVar5,auVar8._0_8_,uVar7,uVar1)" (( "(") (identifier "uVar5") (, ",") (field_expression "auVar8._0_8_" (identifier "auVar8") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "uVar7") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;" (assignment_expression "*(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x28) + 1" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auVar8._8_8_ = 1;" (assignment_expression "auVar8._8_8_ = 1" (field_expression "auVar8._8_8_" (identifier "auVar8") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "1")) (; ";")) (return_statement "return auVar8;" (return "return") (identifier "auVar8") (; ";")) (} "}"))

/* DWARF original name: _M_insert_unique<gold::Cie* const&>
   DWARF original prototype: pair<std::_Rb_tree_iterator<gold::Cie*>,_bool>
   _M_insert_unique<gold::Cie*_const&>(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
   * this, Cie * * __v) */

pair<std::_Rb_tree_iterator<gold::type_2*>,var_1> __thiscall
std::
_Rb_tree<gold::type_2*,_gold::type_2*,_std::_Identity<gold::type_2*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::type_2*>_>
::_M_insert_unique<gold::type_2*_const&>
          (_Rb_tree<gold::type_2*,_gold::type_2*,_std::_Identity<gold::type_2*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::type_2*>_>
           *this,type_2 **__v)

{
  type_1 *var_5;
  size_t *psVar2;
  type_2 *cie1;
  type_2 *cie2;
  bool bVar3;
  type_3 *var_4;
  type_3 *var_7;
  pair<std::_Rb_tree_iterator<gold::type_2*>,var_1> var_2;
  pair<std::_Rb_tree_iterator<gold::type_2*>,var_1> var_3;
  
  var_5 = &(this->_M_impl).super__Rb_tree_header;
  var_4 = (this->_M_impl).super__Rb_tree_header._M_header._M_parent;
  if (var_4 == (type_3 *)0x0) {
    var_7 = &var_5->_M_header;
    if (var_5 == (type_1 *)(this->_M_impl).super__Rb_tree_header._M_header._M_left) {
      bVar3 = true;
      goto LAB_0024841a;
    }
LAB_00248466:
    var_4 = (type_3 *)var_6(var_7);
    bVar3 = gold::operator<(*(type_2 **)(var_4 + 1),*__v);
joined_r0x00248409:
    if (!bVar3) {
      var_3._8_8_ = 0;
      var_3.first._M_node = var_4;
      return var_3;
    }
  }
  else {
    cie1 = *__v;
    do {
      var_7 = var_4;
      cie2 = *(type_2 **)(var_7 + 1);
      bVar3 = gold::operator<(cie1,cie2);
      if (bVar3) {
        var_4 = var_7->_M_left;
      }
      else {
        var_4 = var_7->_M_right;
      }
    } while (var_4 != (type_4)0x0);
    if (!bVar3) {
      bVar3 = gold::operator<(cie2,cie1);
      var_4 = var_7;
      goto joined_r0x00248409;
    }
    if (var_7 != (this->_M_impl).super__Rb_tree_header._M_header._M_left) goto LAB_00248466;
  }
  bVar3 = true;
  if (var_5 != (type_1 *)var_7) {
    bVar3 = gold::operator<(*__v,*(type_2 **)(var_7 + 1));
  }
LAB_0024841a:
  var_2.first._M_node = (type_4)var_8(0x28);
  *(type_2 **)(var_2.first._M_node + 1) = *__v;
  var_9(bVar3,var_2.first._M_node,var_7,&var_5->_M_header);
  psVar2 = &(this->_M_impl).super__Rb_tree_header._M_node_count;
  *psVar2 = *psVar2 + 1;
  var_2._8_8_ = 1;
  return var_2;
}


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

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

{
  ulong uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  undefined1 uVar5;
  ulong uVar6;
  ulong uVar7;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  
  uVar1 = param_1 + 8;
  if (*(ulong *)(param_1 + 0x10) == 0) {
    uVar7 = uVar1;
    if (uVar1 == *(ulong *)(param_1 + 0x18)) {
      uVar5 = 1;
      goto LAB_0024841a;
    }
LAB_00248466:
    uVar6 = thunk_FUN_00278080(uVar7);
    cVar4 = FUN_00247740(*(undefined8 *)(uVar6 + 0x20),*param_2);
joined_r0x00248409:
    if (cVar4 == '\0') {
      auVar9._8_8_ = 0;
      auVar9._0_8_ = uVar6;
      return auVar9;
    }
  }
  else {
    uVar2 = *param_2;
    uVar6 = *(ulong *)(param_1 + 0x10);
    do {
      uVar7 = uVar6;
      uVar3 = *(undefined8 *)(uVar7 + 0x20);
      cVar4 = FUN_00247740(uVar2,uVar3);
      if (cVar4 == '\0') {
        uVar6 = *(ulong *)(uVar7 + 0x18);
      }
      else {
        uVar6 = *(ulong *)(uVar7 + 0x10);
      }
    } while (uVar6 != 0);
    if (cVar4 == '\0') {
      cVar4 = FUN_00247740(uVar3,uVar2);
      uVar6 = uVar7;
      goto joined_r0x00248409;
    }
    if (uVar7 != *(ulong *)(param_1 + 0x18)) goto LAB_00248466;
  }
  uVar5 = 1;
  if (uVar1 != uVar7) {
    uVar5 = FUN_00247740(*param_2,*(undefined8 *)(uVar7 + 0x20));
  }
LAB_0024841a:
  auVar8._0_8_ = FUN_00275550(0x28);
  *(undefined8 *)(auVar8._0_8_ + 0x20) = *param_2;
  FUN_00278220(uVar5,auVar8._0_8_,uVar7,uVar1);
  *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  auVar8._8_8_ = 1;
  return auVar8;
}

