
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original name: __move_merge<gold::Output_segment**,
   __gnu_cxx::__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments> > */

__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
 std::
 __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments>_>
           (Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,
           Output_segment **__last2,
           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
           __result,_Iter_comp_iter<gold::Layout::Compare_segments> __comp)

{
  undefined3 extraout_var;
  bool bVar2;
  Output_segment *pOVar1;
  _Iter_comp_iter<gold::Layout::Compare_segments> _Var3;
  Layout *in_stack_00000018;
  
  if (__last1 == __first2) {
LAB_00138794:
    pOVar1 = (Output_segment *)
             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));
    if (__result._M_current != __last2) {
      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);
      *__first1 = pOVar1;
      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
              )__first1;
    }
  }
  else {
    _Var3._M_comp.layout_ = __comp._M_comp.layout_;
    if (__last2 != __result._M_current) {
      do {
        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);
        if (CONCAT31(extraout_var,bVar2) == 0) {
          pOVar1 = *__last1;
          __last1 = __last1 + 1;
          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
        }
        else {
          pOVar1 = *__last2;
          __last2 = __last2 + 1;
          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
        }
        __comp._M_comp.layout_ =
             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;
        if (__last1 == __first2) goto LAB_00138794;
        __comp._M_comp.layout_ =
             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;
        _Var3._M_comp.layout_ = __comp._M_comp.layout_;
      } while (__last2 != __result._M_current);
    }
    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));
    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);
  }
  *__first1 = pOVar1;
  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
          )__first1;
}



/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > > std::__move_merge<gold::Output_segment**,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >, __ops::_Iter_comp_iter<gold::Layout::Compare_segments>
   >(gold::Output_segment**, gold::Output_segment**, gold::Output_segment**, gold::Output_segment**,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >,
   __ops::_Iter_comp_iter<gold::Layout::Compare_segments>) */

int * std::
      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>
                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                undefined4 *param_5,undefined4 *param_6,Layout *param_7)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  
  if (param_2 == param_3) {
LAB_00138794:
    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);
    if (param_5 != param_4) {
      (*(code *)PTR_memmove_004366d8)(param_6,param_4);
      *param_1 = iVar1;
      return param_1;
    }
  }
  else {
    puVar3 = param_6;
    if (param_4 != param_5) {
      do {
        iVar1 = gold::Layout::segment_precedes
                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);
        if (iVar1 == 0) {
          uVar2 = *param_2;
          param_2 = param_2 + 1;
          *puVar3 = uVar2;
        }
        else {
          uVar2 = *param_4;
          param_4 = param_4 + 1;
          *puVar3 = uVar2;
        }
        param_6 = puVar3 + 1;
        if (param_2 == param_3) goto LAB_00138794;
        param_6 = puVar3 + 1;
        puVar3 = param_6;
      } while (param_4 != param_5);
    }
    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);
    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);
  }
  *param_1 = iVar1;
  return param_1;
}


lui gp,0x30
addiu gp,gp,0x1aec
addu gp,gp,t9
addiu sp,sp,-0x40
sw gp,0x10(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
or s5,a0,zero
sw s4,0x2c(sp)
sw s2,0x24(sp)
sw s0,0x1c(sp)
or s0,a3,zero
sw ra,0x3c(sp)
sw s7,0x38(sp)
sw s3,0x28(sp)
sw s1,0x20(sp)
lw s4,0x50(sp)
lw s6,0x58(sp)
beq a1,a2,0x00138794
_lw s2,0x54(sp)
or s1,a1,zero
beq a3,s4,0x001387e4
_or s3,a2,zero
b 0x00138764
_lw s7,-0x71f8(gp)
lw v0,0x0(s0)
addiu s2,s2,0x4
addiu s0,s0,0x4
beq s1,s3,0x00138794
_sw v0,-0x4(s2)
beq s0,s4,0x001387e4
_nop
lw a2,0x0(s1)
or a0,s6,zero
or t9,s7,zero
bal 0x0011ed1c
_lw a1,0x0(s0)
bne v0,zero,0x00138748
_lw gp,0x10(sp)
lw v0,0x0(s1)
addiu s2,s2,0x4
addiu s1,s1,0x4
bne s1,s3,0x0013875c
_sw v0,-0x4(s2)
subu a2,s4,s0
beq s4,s0,0x00138800
_addu s3,s2,a2
lw t9,-0x3af8(gp)
or a1,s0,zero
jalr t9
_or a0,s2,zero
or v0,s5,zero
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s4,0x2c(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
sw s3,0x0(s5)
lw s5,0x30(sp)
lw s3,0x28(sp)
jr ra
_addiu sp,sp,0x40
subu s3,s3,s1
lw t9,-0x3af8(gp)
or a1,s1,zero
or a2,s3,zero
addu s3,s2,s3
jalr t9
_or a0,s2,zero
lw ra,0x3c(sp)
or v0,s5,zero
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s4,0x2c(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
sw s3,0x0(s5)
lw s5,0x30(sp)
lw s3,0x28(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > > std::__move_merge<gold::Output_segment**,\n   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > >, __ops::_Iter_comp_iter<gold::Layout::Compare_segments>\n   >(gold::Output_segment**, gold::Output_segment**, gold::Output_segment**, gold::Output_segment**,\n   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > >,\n   __ops::_Iter_comp_iter<gold::Layout::Compare_segments>) */\n\nint * std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  \n  if (param_2 == param_3) {\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }\n  else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  *param_1 = iVar1;\n  return param_1;\n}\n\n" comment (declaration "int * std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int iVar1;" primitive_type (pointer_declarator "* std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR "std::\n      __move_merge<gold::Output_segment" identifier : : identifier < identifier : : identifier) (pointer_declarator "**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (pointer_declarator "*,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR ",__normal_iterator<gold::Output_segment" , identifier < identifier : : identifier) (pointer_declarator "**,std::vector<gold::Output_segment" * (pointer_declarator "*,std::vector<gold::Output_segment" * (ERROR ",std::vector<gold::" , identifier : : identifier < identifier : :) identifier))))) (ERROR "*" *) , (ERROR "std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>>>" * >> >) , (ERROR "__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int" identifier : : identifier < identifier : : identifier : : (function_declarator "Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" identifier (ERROR ">>" >>) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "Layout *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (if_statement "if (param_2 == param_3) {\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }\n  else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }" { (labeled_statement "LAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" statement_identifier : (expression_statement "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4)" identifier = (binary_expression "(int)param_6 + ((int)param_5 - (int)param_4)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_5 - (int)param_4)" ( (binary_expression "(int)param_5 - (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" if (parenthesized_expression "(param_5 != param_4)" ( (binary_expression "param_5 != param_4" identifier != identifier) )) (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_4);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_4)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_6,param_4)" ( identifier , identifier ))) ;) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" else (compound_statement "{\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" if (parenthesized_expression "(param_4 != param_5)" ( (binary_expression "param_4 != param_5" identifier != identifier) )) (compound_statement "{\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" { (do_statement "do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);" do (compound_statement "{\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      }" { (ERROR "iVar1 = gold::" (assignment_expression "iVar1 = gold" identifier = identifier) : :) (labeled_statement "Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" statement_identifier : (ERROR ":" :) (expression_statement "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" (call_expression "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" identifier (argument_list "(param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" ( identifier , (cast_expression "(Output_segment *)*param_4" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier)) , (cast_expression "(Output_segment *)*param_2" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) ))) ;)) (if_statement "if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) }) (else_clause "else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" else (compound_statement "{\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" { (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) }))) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (if_statement "if (param_2 == param_3) goto LAB_00138794;" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00138794;" goto statement_identifier ;)) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) }) while (parenthesized_expression "(param_4 != param_5)" ( (binary_expression "param_4 != param_5" identifier != identifier) )) ;) })) (expression_statement "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2)" identifier = (binary_expression "(int)param_6 + ((int)param_3 - (int)param_2)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_3 - (int)param_2)" ( (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_6,param_2,(int)param_3 - (int)param_2)" ( identifier , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) }))) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original name: __move_merge<gold::Output_segment**,\n   __gnu_cxx::__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*> >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments> > */\n\n__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments>_>\n           (Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold::Layout::Compare_segments> __comp)\n\n{\n  undefined3 extraout_var;\n  bool bVar2;\n  Output_segment *pOVar1;\n  _Iter_comp_iter<gold::Layout::Compare_segments> _Var3;\n  Layout *in_stack_00000018;\n  \n  if (__last1 == __first2) {\nLAB_00138794:\n    pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));\n    if (__result._M_current != __last2) {\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }\n  }\n  else {\n    _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }\n    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }\n  *__first1 = pOVar1;\n  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1;\n}\n\n" comment comment comment comment comment comment comment comment (ERROR "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments>_>\n           (Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold::Layout::Compare_segments> __comp)" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments>_>\n           (Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold::Layout::Compare_segments> __comp)" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>,___gnu_cxx" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx::__normal_iterator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold::Output_segment**,___gnu_cxx" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::\n __move_merge<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) (ERROR "::\n __move_merge" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < identifier) (ERROR "::Layout::Compare_segments" : : identifier : : identifier) > identifier) > (parenthesized_expression "(Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold::Layout::Compare_segments> __comp)" ( (ERROR "Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold::Layout::" (comma_expression "Output_segment **__first1,Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold" (binary_expression "Output_segment **__first1" identifier * (pointer_expression "*__first1" * identifier)) , (comma_expression "Output_segment **__last1,Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold" (binary_expression "Output_segment **__last1" identifier * (pointer_expression "*__last1" * identifier)) , (comma_expression "Output_segment **__first2,\n           Output_segment **__last2,\n           __normal_iterator<gold" (binary_expression "Output_segment **__first2" identifier * (pointer_expression "*__first2" * identifier)) , (comma_expression "Output_segment **__last2,\n           __normal_iterator<gold" (binary_expression "Output_segment **__last2" identifier * (pointer_expression "*__last2" * identifier)) , (binary_expression "__normal_iterator<gold" identifier < identifier))))) : : (type_descriptor "Output_segment**" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) , identifier : : (binary_expression "vector<gold" identifier < identifier) : : (type_descriptor "Output_segment*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : : (binary_expression "allocator<gold" identifier < identifier) : : (comma_expression "Output_segment*>_>_>\n           __result,_Iter_comp_iter<gold" (binary_expression "Output_segment*>_>_>\n           __result" (binary_expression "Output_segment*>_>_" (binary_expression "Output_segment*>_" identifier * (ERROR ">" >) identifier) > identifier) > identifier) , (binary_expression "_Iter_comp_iter<gold" identifier < identifier)) : : identifier : :) (binary_expression "Compare_segments> __comp" identifier > identifier) )))) (compound_statement "{\n  undefined3 extraout_var;\n  bool bVar2;\n  Output_segment *pOVar1;\n  _Iter_comp_iter<gold::Layout::Compare_segments> _Var3;\n  Layout *in_stack_00000018;\n  \n  if (__last1 == __first2) {\nLAB_00138794:\n    pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));\n    if (__result._M_current != __last2) {\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }\n  }\n  else {\n    _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }\n    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }\n  *__first1 = pOVar1;\n  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1;\n}" { (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "Output_segment *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (ERROR "_Iter_comp_iter<gold::" (binary_expression "_Iter_comp_iter<gold" identifier < identifier) : :) (labeled_statement "Layout::Compare_segments> _Var3;" statement_identifier : (ERROR ":" :) (expression_statement "Compare_segments> _Var3;" (binary_expression "Compare_segments> _Var3" identifier > identifier) ;)) (declaration "Layout *in_stack_00000018;" type_identifier (pointer_declarator "*in_stack_00000018" * identifier) ;) (if_statement "if (__last1 == __first2) {\nLAB_00138794:\n    pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));\n    if (__result._M_current != __last2) {\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }\n  }\n  else {\n    _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }\n    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" if (parenthesized_expression "(__last1 == __first2)" ( (binary_expression "__last1 == __first2" identifier == identifier) )) (compound_statement "{\nLAB_00138794:\n    pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));\n    if (__result._M_current != __last2) {\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }\n  }" { (labeled_statement "LAB_00138794:\n    pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));" statement_identifier : (expression_statement "pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2));" (assignment_expression "pOVar1 = (Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2))" identifier = (cast_expression "(Output_segment *)\n             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2))" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2))" ( (binary_expression "(int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)__last2)" (cast_expression "(int)__comp._M_comp.layout_" ( (type_descriptor "int" primitive_type) ) (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier)) + (parenthesized_expression "((int)__result._M_current - (int)__last2)" ( (binary_expression "(int)__result._M_current - (int)__last2" (cast_expression "(int)__result._M_current" ( (type_descriptor "int" primitive_type) ) (field_expression "__result._M_current" identifier . field_identifier)) - (cast_expression "(int)__last2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;)) (if_statement "if (__result._M_current != __last2) {\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }" if (parenthesized_expression "(__result._M_current != __last2)" ( (binary_expression "__result._M_current != __last2" (field_expression "__result._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);\n      *__first1 = pOVar1;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2);" (call_expression "(*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last2)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(__comp._M_comp.layout_,__last2)" ( (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier) , identifier ))) ;) (expression_statement "*__first1 = pOVar1;" (assignment_expression "*__first1 = pOVar1" (pointer_expression "*__first1" * identifier) = identifier) ;) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first1" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) })) }) (else_clause "else {\n    _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }\n    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" else (compound_statement "{\n    _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }\n    pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n    (*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" { (expression_statement "_Var3._M_comp.layout_ = __comp._M_comp.layout_;" (assignment_expression "_Var3._M_comp.layout_ = __comp._M_comp.layout_" (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier) = (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (__last2 != __result._M_current) {\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }" if (parenthesized_expression "(__last2 != __result._M_current)" ( (binary_expression "__last2 != __result._M_current" identifier != (field_expression "__result._M_current" identifier . field_identifier)) )) (compound_statement "{\n      do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);\n    }" { (do_statement "do {\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      } while (__last2 != __result._M_current);" do (compound_statement "{\n        bVar2 = gold::Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);\n        if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        if (__last1 == __first2) goto LAB_00138794;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n      }" { (ERROR "bVar2 = gold::" (assignment_expression "bVar2 = gold" identifier = identifier) : :) (labeled_statement "Layout::segment_precedes(in_stack_00000018,*__last2,*__last1);" statement_identifier : (ERROR ":" :) (expression_statement "segment_precedes(in_stack_00000018,*__last2,*__last1);" (call_expression "segment_precedes(in_stack_00000018,*__last2,*__last1)" identifier (argument_list "(in_stack_00000018,*__last2,*__last1)" ( identifier , (pointer_expression "*__last2" * identifier) , (pointer_expression "*__last1" * identifier) ))) ;)) (if_statement "if (CONCAT31(extraout_var,bVar2) == 0) {\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }\n        else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }" if (parenthesized_expression "(CONCAT31(extraout_var,bVar2) == 0)" ( (binary_expression "CONCAT31(extraout_var,bVar2) == 0" (call_expression "CONCAT31(extraout_var,bVar2)" identifier (argument_list "(extraout_var,bVar2)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n          pOVar1 = *__last1;\n          __last1 = __last1 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }" { (expression_statement "pOVar1 = *__last1;" (assignment_expression "pOVar1 = *__last1" identifier = (pointer_expression "*__last1" * identifier)) ;) (expression_statement "__last1 = __last1 + 1;" (assignment_expression "__last1 = __last1 + 1" identifier = (binary_expression "__last1 + 1" identifier + number_literal)) ;) (expression_statement "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;" (assignment_expression "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1" (field_expression "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_" (parenthesized_expression "((Layout *)_Var3._M_comp.layout_)" ( (cast_expression "(Layout *)_Var3._M_comp.layout_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier)) )) -> field_identifier) = (cast_expression "(int)pOVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }" else (compound_statement "{\n          pOVar1 = *__last2;\n          __last2 = __last2 + 1;\n          ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        }" { (expression_statement "pOVar1 = *__last2;" (assignment_expression "pOVar1 = *__last2" identifier = (pointer_expression "*__last2" * identifier)) ;) (expression_statement "__last2 = __last2 + 1;" (assignment_expression "__last2 = __last2 + 1" identifier = (binary_expression "__last2 + 1" identifier + number_literal)) ;) (expression_statement "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;" (assignment_expression "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1" (field_expression "((Layout *)_Var3._M_comp.layout_)->number_of_input_files_" (parenthesized_expression "((Layout *)_Var3._M_comp.layout_)" ( (cast_expression "(Layout *)_Var3._M_comp.layout_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier)) )) -> field_identifier) = (cast_expression "(int)pOVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (expression_statement "__comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;" (assignment_expression "__comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_" (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier) = (binary_expression "(Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_" (parenthesized_expression "(Compare_segments)" ( identifier )) & (field_expression "((Layout *)_Var3._M_comp.layout_)->script_options_" (parenthesized_expression "((Layout *)_Var3._M_comp.layout_)" ( (cast_expression "(Layout *)_Var3._M_comp.layout_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier)) )) -> field_identifier))) ;) (if_statement "if (__last1 == __first2) goto LAB_00138794;" if (parenthesized_expression "(__last1 == __first2)" ( (binary_expression "__last1 == __first2" identifier == identifier) )) (goto_statement "goto LAB_00138794;" goto statement_identifier ;)) (expression_statement "__comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;" (assignment_expression "__comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_" (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier) = (binary_expression "(Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_" (parenthesized_expression "(Compare_segments)" ( identifier )) & (field_expression "((Layout *)_Var3._M_comp.layout_)->script_options_" (parenthesized_expression "((Layout *)_Var3._M_comp.layout_)" ( (cast_expression "(Layout *)_Var3._M_comp.layout_" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier)) )) -> field_identifier))) ;) (expression_statement "_Var3._M_comp.layout_ = __comp._M_comp.layout_;" (assignment_expression "_Var3._M_comp.layout_ = __comp._M_comp.layout_" (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier) = (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier)) ;) }) while (parenthesized_expression "(__last2 != __result._M_current)" ( (binary_expression "__last2 != __result._M_current" identifier != (field_expression "__result._M_current" identifier . field_identifier)) )) ;) })) (expression_statement "pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));" (assignment_expression "pOVar1 = (Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1))" identifier = (cast_expression "(Output_segment *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1))" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1))" ( (binary_expression "(int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1)" (cast_expression "(int)__comp._M_comp.layout_" ( (type_descriptor "int" primitive_type) ) (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier)) + (parenthesized_expression "((int)__first2 - (int)__last1)" ( (binary_expression "(int)__first2 - (int)__last1" (cast_expression "(int)__first2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__last1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "(*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);" (call_expression "(*(code *)PTR_memmove_004366d8)(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1)" ( (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier) , identifier , (binary_expression "(int)__first2 - (int)__last1" (cast_expression "(int)__first2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__last1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) }))) (expression_statement "*__first1 = pOVar1;" (assignment_expression "*__first1 = pOVar1" (pointer_expression "*__first1" * identifier) = identifier) ;) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) }))
(translation_unit "int * std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  \n  if (param_2 == param_3) {\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }\n  else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  *param_1 = iVar1;\n  return param_1;\n}\n\n" (declaration "int * std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int iVar1;" primitive_type (pointer_declarator "* std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR "std::\n      __move_merge<gold::Output_segment" identifier : : identifier < identifier : : identifier) (pointer_declarator "**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (pointer_declarator "*,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR ",__normal_iterator<gold::Output_segment" , identifier < identifier : : identifier) (pointer_declarator "**,std::vector<gold::Output_segment" * (pointer_declarator "*,std::vector<gold::Output_segment" * (ERROR ",std::vector<gold::" , identifier : : identifier < identifier : :) identifier))))) (ERROR "*" *) , (ERROR "std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>>>" * >> >) , (ERROR "__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int" identifier : : identifier < identifier : : identifier : : (function_declarator "Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" identifier (ERROR ">>" >>) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "Layout *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (if_statement "if (param_2 == param_3) {\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }\n  else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }" { (labeled_statement "LAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" statement_identifier : (expression_statement "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4)" identifier = (binary_expression "(int)param_6 + ((int)param_5 - (int)param_4)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_5 - (int)param_4)" ( (binary_expression "(int)param_5 - (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (if_statement "if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" if (parenthesized_expression "(param_5 != param_4)" ( (binary_expression "param_5 != param_4" identifier != identifier) )) (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" { (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_4);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_4)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_6,param_4)" ( identifier , identifier ))) ;) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" else (compound_statement "{\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" if (parenthesized_expression "(param_4 != param_5)" ( (binary_expression "param_4 != param_5" identifier != identifier) )) (compound_statement "{\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" { (do_statement "do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);" do (compound_statement "{\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      }" { (ERROR "iVar1 = gold::" (assignment_expression "iVar1 = gold" identifier = identifier) : :) (labeled_statement "Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" statement_identifier : (ERROR ":" :) (expression_statement "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" (call_expression "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" identifier (argument_list "(param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" ( identifier , (cast_expression "(Output_segment *)*param_4" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier)) , (cast_expression "(Output_segment *)*param_2" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) ))) ;)) (if_statement "if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) }) (else_clause "else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" else (compound_statement "{\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" { (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" * identifier) = identifier) ;) }))) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (if_statement "if (param_2 == param_3) goto LAB_00138794;" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00138794;" goto statement_identifier ;)) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) }) while (parenthesized_expression "(param_4 != param_5)" ( (binary_expression "param_4 != param_5" identifier != identifier) )) ;) })) (expression_statement "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2)" identifier = (binary_expression "(int)param_6 + ((int)param_3 - (int)param_2)" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_3 - (int)param_2)" ( (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" ( (pointer_expression "*(code *)PTR_memmove_004366d8" * (cast_expression "(code *)PTR_memmove_004366d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_6,param_2,(int)param_3 - (int)param_2)" ( identifier , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) }))) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (pointer_declarator * (ERROR IDENT : : IDENT < IDENT : : IDENT) (pointer_declarator * (pointer_declarator * (ERROR , IDENT < IDENT : : IDENT) (pointer_declarator * (pointer_declarator * (ERROR , IDENT : : IDENT < IDENT : :) IDENT))))) (ERROR *) , (ERROR IDENT : : IDENT < IDENT : :) IDENT (ERROR * >> >) , (ERROR IDENT : : IDENT < IDENT : : IDENT : : (function_declarator IDENT (ERROR >>) (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) { TYPE) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(declaration "int * std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>,__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int iVar1;" (primitive_type "int") (pointer_declarator "* std::\n      __move_merge<gold::Output_segment**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" (* "*") (ERROR "std::\n      __move_merge<gold::Output_segment" (identifier "std") (: ":") (: ":") (identifier "__move_merge") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Output_segment")) (pointer_declarator "**,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" (* "*") (pointer_declarator "*,__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" (* "*") (ERROR ",__normal_iterator<gold::Output_segment" (, ",") (identifier "__normal_iterator") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Output_segment")) (pointer_declarator "**,std::vector<gold::Output_segment" (* "*") (pointer_declarator "*,std::vector<gold::Output_segment" (* "*") (ERROR ",std::vector<gold::" (, ",") (identifier "std") (: ":") (: ":") (identifier "vector") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Output_segment")))))) (ERROR "*" (* "*")) (, ",") (ERROR "std::allocator<gold::" (identifier "std") (: ":") (: ":") (identifier "allocator") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Output_segment") (ERROR "*>>>" (* "*") (>> ">>") (> ">")) (, ",") (ERROR "__ops::_Iter_comp_iter<gold::Layout::Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)\n\n{\n  int" (identifier "__ops") (: ":") (: ":") (identifier "_Iter_comp_iter") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Layout") (: ":") (: ":") (function_declarator "Compare_segments>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" (identifier "Compare_segments") (ERROR ">>" (>> ">>")) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                undefined4 *param_5,undefined4 *param_6,Layout *param_7)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined4 *param_6" (type_identifier "undefined4") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "Layout *param_7" (type_identifier "Layout") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (if_statement "if (param_2 == param_3) {\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }\n  else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" (if "if") (parenthesized_expression "(param_2 == param_3)" (( "(") (binary_expression "param_2 == param_3" (identifier "param_2") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\nLAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);\n    if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }\n  }" ({ "{") (labeled_statement "LAB_00138794:\n    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" (statement_identifier "LAB_00138794") (: ":") (expression_statement "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_5 - (int)param_4)" (identifier "iVar1") (= "=") (binary_expression "(int)param_6 + ((int)param_5 - (int)param_4)" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (+ "+") (parenthesized_expression "((int)param_5 - (int)param_4)" (( "(") (binary_expression "(int)param_5 - (int)param_4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")))) (; ";"))) (if_statement "if (param_5 != param_4) {\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(param_5 != param_4)" (( "(") (binary_expression "param_5 != param_4" (identifier "param_5") (!= "!=") (identifier "param_4")) () ")")) (compound_statement "{\n      (*(code *)PTR_memmove_004366d8)(param_6,param_4);\n      *param_1 = iVar1;\n      return param_1;\n    }" ({ "{") (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_4);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_4)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" (( "(") (pointer_expression "*(code *)PTR_memmove_004366d8" (* "*") (cast_expression "(code *)PTR_memmove_004366d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_004366d8"))) () ")")) (argument_list "(param_6,param_4)" (( "(") (identifier "param_6") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar1")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" (else "else") (compound_statement "{\n    puVar3 = param_6;\n    if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }\n    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);\n    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);\n  }" ({ "{") (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" (identifier "puVar3") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_4 != param_5) {\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" (if "if") (parenthesized_expression "(param_4 != param_5)" (( "(") (binary_expression "param_4 != param_5" (identifier "param_4") (!= "!=") (identifier "param_5")) () ")")) (compound_statement "{\n      do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);\n    }" ({ "{") (do_statement "do {\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      } while (param_4 != param_5);" (do "do") (compound_statement "{\n        iVar1 = gold::Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);\n        if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }\n        param_6 = puVar3 + 1;\n        if (param_2 == param_3) goto LAB_00138794;\n        param_6 = puVar3 + 1;\n        puVar3 = param_6;\n      }" ({ "{") (ERROR "iVar1 = gold::" (assignment_expression "iVar1 = gold" (identifier "iVar1") (= "=") (identifier "gold")) (: ":") (: ":")) (labeled_statement "Layout::segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" (statement_identifier "Layout") (: ":") (ERROR ":" (: ":")) (expression_statement "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);" (call_expression "segment_precedes\n                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" (identifier "segment_precedes") (argument_list "(param_7,(Output_segment *)*param_4,(Output_segment *)*param_2)" (( "(") (identifier "param_7") (, ",") (cast_expression "(Output_segment *)*param_4" (( "(") (type_descriptor "Output_segment *" (type_identifier "Output_segment") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (, ",") (cast_expression "(Output_segment *)*param_2" (( "(") (type_descriptor "Output_segment *" (type_identifier "Output_segment") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) (; ";"))) (if_statement "if (iVar1 == 0) {\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }\n        else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar2 = *param_2;\n          param_2 = param_2 + 1;\n          *puVar3 = uVar2;\n        }" ({ "{") (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar2")) (; ";")) (} "}")) (else_clause "else {\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" (else "else") (compound_statement "{\n          uVar2 = *param_4;\n          param_4 = param_4 + 1;\n          *puVar3 = uVar2;\n        }" ({ "{") (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" (identifier "uVar2") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" (identifier "param_4") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar3 = uVar2;" (assignment_expression "*puVar3 = uVar2" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" (identifier "param_6") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_2 == param_3) goto LAB_00138794;" (if "if") (parenthesized_expression "(param_2 == param_3)" (( "(") (binary_expression "param_2 == param_3" (identifier "param_2") (== "==") (identifier "param_3")) () ")")) (goto_statement "goto LAB_00138794;" (goto "goto") (statement_identifier "LAB_00138794") (; ";"))) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" (identifier "param_6") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" (identifier "puVar3") (= "=") (identifier "param_6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != param_5)" (( "(") (binary_expression "param_4 != param_5" (identifier "param_4") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);" (assignment_expression "iVar1 = (int)param_6 + ((int)param_3 - (int)param_2)" (identifier "iVar1") (= "=") (binary_expression "(int)param_6 + ((int)param_3 - (int)param_2)" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (+ "+") (parenthesized_expression "((int)param_3 - (int)param_2)" (( "(") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "(*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004366d8)" (( "(") (pointer_expression "*(code *)PTR_memmove_004366d8" (* "*") (cast_expression "(code *)PTR_memmove_004366d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_004366d8"))) () ")")) (argument_list "(param_6,param_2,(int)param_3 - (int)param_2)" (( "(") (identifier "param_6") (, ",") (identifier "param_2") (, ",") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) (; ";")) (} "}")))) (expression_statement "*param_1 = iVar1;" (assignment_expression "*param_1 = iVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar1")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original name: __move_merge<gold::Output_segment**,
   __gnu_cxx::__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Layout::Compare_segments> > */

var_6<var_7::type_2**,var_8::vector<var_7::type_2*,var_8::allocator<var_7::type_2*>var_9>var_9>
 std::
 __move_merge<var_7::type_2**,___gnu_cxx::var_6<var_7::type_2**,var_8::vector<var_7::type_2*>var_9>,___gnu_cxx::__ops::_Iter_comp_iter<var_7::type_3::var_1>var_9>
           (type_2 **var_10,type_2 **var_3,type_2 **var_4,
           type_2 **var_5,
           var_6<var_7::type_2**,var_8::vector<var_7::type_2*,var_8::allocator<var_7::type_2*>var_9>var_9>
           __result,_Iter_comp_iter<var_7::type_3::var_1> __comp)

{
  type_1 extraout_var;
  bool bVar2;
  type_2 *pOVar1;
  _Iter_comp_iter<var_7::Layout::var_1> var_2;
  type_3 *in_stack_00000018;
  
  if (var_3 == var_4) {
LAB_00138794:
    pOVar1 = (type_2 *)
             ((int)__comp._M_comp.layout_ + ((int)__result._M_current - (int)var_5));
    if (__result._M_current != var_5) {
      (*(type_4 *)PTR_memmove_004366d8)(__comp._M_comp.layout_,var_5);
      *var_10 = pOVar1;
      return (var_6<var_7::type_2**,var_8::vector<var_7::type_2*,var_8::allocator<var_7::type_2*>var_9>var_9>
              )var_10;
    }
  }
  else {
    var_2._M_comp.layout_ = __comp._M_comp.layout_;
    if (var_5 != __result._M_current) {
      do {
        bVar2 = var_7::Layout::var_11(in_stack_00000018,*var_5,*var_3);
        if (var_12(extraout_var,bVar2) == 0) {
          pOVar1 = *var_3;
          var_3 = var_3 + 1;
          ((type_3 *)var_2._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
        }
        else {
          pOVar1 = *var_5;
          var_5 = var_5 + 1;
          ((type_3 *)var_2._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
        }
        __comp._M_comp.layout_ =
             (var_1)&((type_3 *)var_2._M_comp.layout_)->script_options_;
        if (var_3 == var_4) goto LAB_00138794;
        __comp._M_comp.layout_ =
             (var_1)&((type_3 *)var_2._M_comp.layout_)->script_options_;
        var_2._M_comp.layout_ = __comp._M_comp.layout_;
      } while (var_5 != __result._M_current);
    }
    pOVar1 = (type_2 *)((int)__comp._M_comp.layout_ + ((int)var_4 - (int)var_3));
    (*(type_4 *)PTR_memmove_004366d8)(__comp._M_comp.layout_,var_3,(int)var_4 - (int)var_3);
  }
  *var_10 = pOVar1;
  return (var_6<var_7::type_2**,var_8::vector<var_7::type_2*,var_8::allocator<var_7::type_2*>var_9>var_9>
          )var_10;
}


(translation_unit (declaration type: (primitive_type) declarator: (pointer_declarator (ERROR (identifier) (identifier) (identifier) (identifier)) declarator: (pointer_declarator declarator: (pointer_declarator (ERROR (identifier) (identifier) (identifier)) declarator: (pointer_declarator declarator: (pointer_declarator (ERROR (identifier) (identifier) (identifier)) declarator: (identifier)))))) (ERROR) (ERROR (identifier) (identifier) (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier) (identifier) (identifier) (function_declarator declarator: (identifier) (ERROR) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) (primitive_type)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (ERROR (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (identifier)) (ERROR))

/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > > std::__move_merge<gold::Output_segment**,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >, __ops::_Iter_comp_iter<gold::Layout::Compare_segments>
   >(gold::Output_segment**, gold::Output_segment**, gold::Output_segment**, gold::Output_segment**,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >,
   __ops::_Iter_comp_iter<gold::Layout::Compare_segments>) */

int * std::
      MASKED
                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                undefined4 *param_5,undefined4 *param_6,Layout *param_7)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  
  if (param_2 == param_3) {
LAB_00138794:
    iVar1 = (int)param_6 + ((int)param_5 - (int)param_4);
    if (param_5 != param_4) {
      (*(code *)PTR_memmove_004366d8)(param_6,param_4);
      *param_1 = iVar1;
      return param_1;
    }
  }
  else {
    puVar3 = param_6;
    if (param_4 != param_5) {
      do {
        iVar1 = gold::Layout::segment_precedes
                          (param_7,(Output_segment *)*param_4,(Output_segment *)*param_2);
        if (iVar1 == 0) {
          uVar2 = *param_2;
          param_2 = param_2 + 1;
          *puVar3 = uVar2;
        }
        else {
          uVar2 = *param_4;
          param_4 = param_4 + 1;
          *puVar3 = uVar2;
        }
        param_6 = puVar3 + 1;
        if (param_2 == param_3) goto LAB_00138794;
        param_6 = puVar3 + 1;
        puVar3 = param_6;
      } while (param_4 != param_5);
    }
    iVar1 = (int)param_6 + ((int)param_3 - (int)param_2);
    (*(code *)PTR_memmove_004366d8)(param_6,param_2,(int)param_3 - (int)param_2);
  }
  *param_1 = iVar1;
  return param_1;
}

