
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __move_merge<gold::Output_section**,
   __gnu_cxx::__normal_iterator<gold::Output_section**, std::vector<gold::Output_section*> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections> > */

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

{
  Output_section *pOVar1;
  bool bVar2;
  __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
  _Var3;
  void *__dest;
  Sort_output_sections local_40 [2];
  
  local_40[0].elements_ = (Sections_elements *)__comp._M_comp.elements_;
  if ((__first1 != __last1) && (__first2 != __last2)) {
    _Var3._M_current = __result._M_current;
    do {
      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);
      if (bVar2) {
        pOVar1 = *__first2;
        __first2 = __first2 + 1;
        *_Var3._M_current = pOVar1;
      }
      else {
        pOVar1 = *__first1;
        __first1 = __first1 + 1;
        *_Var3._M_current = pOVar1;
      }
      __result._M_current = _Var3._M_current + 1;
    } while ((__first1 != __last1) &&
            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,
            __first2 != __last2));
  }
  if (__last1 != __first1) {
    memmove(__result._M_current,__first1,(long)__last1 - (long)__first1);
  }
  __dest = (void *)((long)__result._M_current + ((long)__last1 - (long)__first1));
  if (__last2 != __first2) {
    memmove(__dest,__first2,(long)__last2 - (long)__first2);
  }
  return (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
          )(Output_section **)((long)__dest + ((long)__last2 - (long)__first2));
}



long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
                 undefined8 *param_5,undefined8 param_6)

{
  undefined8 uVar1;
  char cVar2;
  undefined8 *puVar3;
  void *__dest;
  undefined8 local_40 [2];
  
  local_40[0] = param_6;
  if ((param_1 != param_2) && (param_3 != param_4)) {
    puVar3 = param_5;
    do {
      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);
      if (cVar2 == '\0') {
        uVar1 = *param_1;
        param_1 = param_1 + 1;
        *puVar3 = uVar1;
      }
      else {
        uVar1 = *param_3;
        param_3 = param_3 + 1;
        *puVar3 = uVar1;
      }
      param_5 = puVar3 + 1;
    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));
  }
  if (param_2 != param_1) {
    memmove(param_5,param_1,(long)param_2 - (long)param_1);
  }
  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));
  if (param_4 != param_3) {
    memmove(__dest,param_3,(long)param_4 - (long)param_3);
  }
  return (long)__dest + ((long)param_4 - (long)param_3);
}


PUSH R15
PUSH R14
MOV R14,RCX
PUSH R13
MOV R13,RSI
PUSH R12
MOV R12,R8
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
MOV qword ptr [RSP + 0x8],R9
CMP RDI,RSI
JZ 0x00276c5b
CMP RDX,RCX
JZ 0x00276c5b
LEA R15,[RSP + 0x8]
JMP 0x00276c33
MOV RAX,qword ptr [RBP]
ADD R12,0x8
ADD RBP,0x8
MOV qword ptr [R12 + -0x8],RAX
CMP RBX,R13
JZ 0x00276c5b
CMP RBP,R14
JZ 0x00276c5b
MOV RDX,qword ptr [RBX]
MOV RSI,qword ptr [RBP]
MOV RDI,R15
CALL 0x0026be40
TEST AL,AL
JNZ 0x00276c18
MOV RAX,qword ptr [RBX]
ADD RBX,0x8
ADD R12,0x8
MOV qword ptr [R12 + -0x8],RAX
CMP RBX,R13
JNZ 0x00276c2e
MOV R15,R13
SUB R15,RBX
CMP R13,RBX
JZ 0x00276c74
MOV RDX,R15
MOV RSI,RBX
MOV RDI,R12
CALL 0x001496d0
MOV RBX,R14
ADD R12,R15
SUB RBX,RBP
CMP R14,RBP
JZ 0x00276c90
MOV RDX,RBX
MOV RSI,RBP
MOV RDI,R12
CALL 0x001496d0
ADD RSP,0x18
LEA RAX,[R12 + RBX*0x1]
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}\n\n" (function_definition "long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined8 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0] = param_6;" (assignment_expression "local_40[0] = param_6" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" if (parenthesized_expression "((param_1 != param_2) && (param_3 != param_4))" ( (binary_expression "(param_1 != param_2) && (param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) && (parenthesized_expression "(param_3 != param_4)" ( (binary_expression "param_3 != param_4" identifier != identifier) ))) )) (compound_statement "{\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" { (expression_statement "puVar3 = param_5;" (assignment_expression "puVar3 = param_5" identifier = identifier) ;) (do_statement "do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));" do (compound_statement "{\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    }" { (expression_statement "cVar2 = FUN_0026be40(local_40,*param_3,*param_1);" (assignment_expression "cVar2 = FUN_0026be40(local_40,*param_3,*param_1)" identifier = (call_expression "FUN_0026be40(local_40,*param_3,*param_1)" identifier (argument_list "(local_40,*param_3,*param_1)" ( identifier , (pointer_expression "*param_3" * identifier) , (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }" { (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) }) (else_clause "else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" else (compound_statement "{\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" { (expression_statement "uVar1 = *param_3;" (assignment_expression "uVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) }))) (expression_statement "param_5 = puVar3 + 1;" (assignment_expression "param_5 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4))" ( (binary_expression "(param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) && (parenthesized_expression "(param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" ( (comma_expression "param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4" (assignment_expression "param_5 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) , (comma_expression "puVar3 = param_5, param_3 != param_4" (assignment_expression "puVar3 = param_5" identifier = identifier) , (binary_expression "param_3 != param_4" identifier != identifier))) ))) )) ;) })) (if_statement "if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" if (parenthesized_expression "(param_2 != param_1)" ( (binary_expression "param_2 != param_1" identifier != identifier) )) (compound_statement "{\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" { (expression_statement "memmove(param_5,param_1,(long)param_2 - (long)param_1);" (call_expression "memmove(param_5,param_1,(long)param_2 - (long)param_1)" identifier (argument_list "(param_5,param_1,(long)param_2 - (long)param_1)" ( identifier , identifier , (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));" (assignment_expression "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1))" identifier = (cast_expression "(void *)((long)param_5 + ((long)param_2 - (long)param_1))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_5 + ((long)param_2 - (long)param_1))" ( (binary_expression "(long)param_5 + ((long)param_2 - (long)param_1)" (cast_expression "(long)param_5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)param_2 - (long)param_1)" ( (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" { (expression_statement "memmove(__dest,param_3,(long)param_4 - (long)param_3);" (call_expression "memmove(__dest,param_3,(long)param_4 - (long)param_3)" identifier (argument_list "(__dest,param_3,(long)param_4 - (long)param_3)" ( identifier , identifier , (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (return_statement "return (long)__dest + ((long)param_4 - (long)param_3);" return (binary_expression "(long)__dest + ((long)param_4 - (long)param_3)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)param_4 - (long)param_3)" ( (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __move_merge<gold::Output_section**,\n   __gnu_cxx::__normal_iterator<gold::Output_section**, std::vector<gold::Output_section*> >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections> > */\n\n__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections>_>\n           (Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)\n\n{\n  Output_section *pOVar1;\n  bool bVar2;\n  __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n  _Var3;\n  void *__dest;\n  Sort_output_sections local_40 [2];\n  \n  local_40[0].elements_ = (Sections_elements *)__comp._M_comp.elements_;\n  if ((__first1 != __last1) && (__first2 != __last2)) {\n    _Var3._M_current = __result._M_current;\n    do {\n      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);\n      if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      __result._M_current = _Var3._M_current + 1;\n    } while ((__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2));\n  }\n  if (__last1 != __first1) {\n    memmove(__result._M_current,__first1,(long)__last1 - (long)__first1);\n  }\n  __dest = (void *)((long)__result._M_current + ((long)__last1 - (long)__first1));\n  if (__last2 != __first2) {\n    memmove(__dest,__first2,(long)__last2 - (long)__first2);\n  }\n  return (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n          )(Output_section **)((long)__dest + ((long)__last2 - (long)__first2));\n}\n\n" comment comment (expression_statement "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections>_>\n           (Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)\n\n{\n  Output_section *pOVar1;" (update_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections>_>\n           (Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)\n\n{\n  Output_section *pOVar1" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections>_>\n           (Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)\n\n{\n  Output_section *pOVar1" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold::Output_section**,___gnu_cxx" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __move_merge<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) (ERROR "::\n __move_merge" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < identifier) (ERROR "::Sort_output_sections" : : identifier) > identifier) > (binary_expression "(Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)\n\n{\n  Output_section *pOVar1" (parenthesized_expression "(Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::Sort_output_sections> __comp)" ( (ERROR "Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __result,_Iter_comp_iter<gold::" (comma_expression "Output_section **__first1,Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold" (binary_expression "Output_section **__first1" identifier * (pointer_expression "*__first1" * identifier)) , (comma_expression "Output_section **__last1,Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold" (binary_expression "Output_section **__last1" identifier * (pointer_expression "*__last1" * identifier)) , (comma_expression "Output_section **__first2,\n           Output_section **__last2,\n           __normal_iterator<gold" (binary_expression "Output_section **__first2" identifier * (pointer_expression "*__first2" * identifier)) , (comma_expression "Output_section **__last2,\n           __normal_iterator<gold" (binary_expression "Output_section **__last2" identifier * (pointer_expression "*__last2" * identifier)) , (binary_expression "__normal_iterator<gold" identifier < identifier))))) : : (type_descriptor "Output_section**" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) , identifier : : (binary_expression "vector<gold" identifier < identifier) : : (type_descriptor "Output_section*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : : (binary_expression "allocator<gold" identifier < identifier) : : (comma_expression "Output_section*>_>_>\n           __result,_Iter_comp_iter<gold" (binary_expression "Output_section*>_>_>\n           __result" (binary_expression "Output_section*>_>_" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) > identifier) , (binary_expression "_Iter_comp_iter<gold" identifier < identifier)) : :) (binary_expression "Sort_output_sections> __comp" identifier > identifier) )) (ERROR "{\n  Output_section" { identifier) * identifier)) --) ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n  _Var3;" (update_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n  _Var3" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n  _Var3" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) --) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "Sort_output_sections local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0].elements_ = (Sections_elements *)__comp._M_comp.elements_;" (assignment_expression "local_40[0].elements_ = (Sections_elements *)__comp._M_comp.elements_" (field_expression "local_40[0].elements_" (subscript_expression "local_40[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(Sections_elements *)__comp._M_comp.elements_" ( (type_descriptor "Sections_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__comp._M_comp.elements_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier))) ;) (if_statement "if ((__first1 != __last1) && (__first2 != __last2)) {\n    _Var3._M_current = __result._M_current;\n    do {\n      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);\n      if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      __result._M_current = _Var3._M_current + 1;\n    } while ((__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2));\n  }" if (parenthesized_expression "((__first1 != __last1) && (__first2 != __last2))" ( (binary_expression "(__first1 != __last1) && (__first2 != __last2)" (parenthesized_expression "(__first1 != __last1)" ( (binary_expression "__first1 != __last1" identifier != identifier) )) && (parenthesized_expression "(__first2 != __last2)" ( (binary_expression "__first2 != __last2" identifier != identifier) ))) )) (compound_statement "{\n    _Var3._M_current = __result._M_current;\n    do {\n      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);\n      if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      __result._M_current = _Var3._M_current + 1;\n    } while ((__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2));\n  }" { (expression_statement "_Var3._M_current = __result._M_current;" (assignment_expression "_Var3._M_current = __result._M_current" (field_expression "_Var3._M_current" identifier . field_identifier) = (field_expression "__result._M_current" identifier . field_identifier)) ;) (do_statement "do {\n      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);\n      if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      __result._M_current = _Var3._M_current + 1;\n    } while ((__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2));" do (compound_statement "{\n      bVar2 = gold::Sort_output_sections::operator()(local_40,*__first2,*__first1);\n      if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      __result._M_current = _Var3._M_current + 1;\n    }" { (ERROR "bVar2 = gold::" (assignment_expression "bVar2 = gold" identifier = identifier) : :) (labeled_statement "Sort_output_sections::operator()(local_40,*__first2,*__first1);" statement_identifier : (ERROR ":" :) (expression_statement "operator()(local_40,*__first2,*__first1);" (call_expression "operator()(local_40,*__first2,*__first1)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "(local_40,*__first2,*__first1)" ( identifier , (pointer_expression "*__first2" * identifier) , (pointer_expression "*__first1" * identifier) ))) ;)) (if_statement "if (bVar2) {\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }\n      else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        pOVar1 = *__first2;\n        __first2 = __first2 + 1;\n        *_Var3._M_current = pOVar1;\n      }" { (expression_statement "pOVar1 = *__first2;" (assignment_expression "pOVar1 = *__first2" identifier = (pointer_expression "*__first2" * identifier)) ;) (expression_statement "__first2 = __first2 + 1;" (assignment_expression "__first2 = __first2 + 1" identifier = (binary_expression "__first2 + 1" identifier + number_literal)) ;) (expression_statement "*_Var3._M_current = pOVar1;" (assignment_expression "*_Var3._M_current = pOVar1" (pointer_expression "*_Var3._M_current" * (field_expression "_Var3._M_current" identifier . field_identifier)) = identifier) ;) }) (else_clause "else {\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }" else (compound_statement "{\n        pOVar1 = *__first1;\n        __first1 = __first1 + 1;\n        *_Var3._M_current = pOVar1;\n      }" { (expression_statement "pOVar1 = *__first1;" (assignment_expression "pOVar1 = *__first1" identifier = (pointer_expression "*__first1" * identifier)) ;) (expression_statement "__first1 = __first1 + 1;" (assignment_expression "__first1 = __first1 + 1" identifier = (binary_expression "__first1 + 1" identifier + number_literal)) ;) (expression_statement "*_Var3._M_current = pOVar1;" (assignment_expression "*_Var3._M_current = pOVar1" (pointer_expression "*_Var3._M_current" * (field_expression "_Var3._M_current" identifier . field_identifier)) = identifier) ;) }))) (expression_statement "__result._M_current = _Var3._M_current + 1;" (assignment_expression "__result._M_current = _Var3._M_current + 1" (field_expression "__result._M_current" identifier . field_identifier) = (binary_expression "_Var3._M_current + 1" (field_expression "_Var3._M_current" identifier . field_identifier) + number_literal)) ;) }) while (parenthesized_expression "((__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2))" ( (binary_expression "(__first1 != __last1) &&\n            (__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2)" (parenthesized_expression "(__first1 != __last1)" ( (binary_expression "__first1 != __last1" identifier != identifier) )) && (parenthesized_expression "(__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2)" ( (comma_expression "__result._M_current = _Var3._M_current + 1, _Var3._M_current = __result._M_current,\n            __first2 != __last2" (assignment_expression "__result._M_current = _Var3._M_current + 1" (field_expression "__result._M_current" identifier . field_identifier) = (binary_expression "_Var3._M_current + 1" (field_expression "_Var3._M_current" identifier . field_identifier) + number_literal)) , (comma_expression "_Var3._M_current = __result._M_current,\n            __first2 != __last2" (assignment_expression "_Var3._M_current = __result._M_current" (field_expression "_Var3._M_current" identifier . field_identifier) = (field_expression "__result._M_current" identifier . field_identifier)) , (binary_expression "__first2 != __last2" identifier != identifier))) ))) )) ;) })) (if_statement "if (__last1 != __first1) {\n    memmove(__result._M_current,__first1,(long)__last1 - (long)__first1);\n  }" if (parenthesized_expression "(__last1 != __first1)" ( (binary_expression "__last1 != __first1" identifier != identifier) )) (compound_statement "{\n    memmove(__result._M_current,__first1,(long)__last1 - (long)__first1);\n  }" { (expression_statement "memmove(__result._M_current,__first1,(long)__last1 - (long)__first1);" (call_expression "memmove(__result._M_current,__first1,(long)__last1 - (long)__first1)" identifier (argument_list "(__result._M_current,__first1,(long)__last1 - (long)__first1)" ( (field_expression "__result._M_current" identifier . field_identifier) , identifier , (binary_expression "(long)__last1 - (long)__first1" (cast_expression "(long)__last1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "__dest = (void *)((long)__result._M_current + ((long)__last1 - (long)__first1));" (assignment_expression "__dest = (void *)((long)__result._M_current + ((long)__last1 - (long)__first1))" identifier = (cast_expression "(void *)((long)__result._M_current + ((long)__last1 - (long)__first1))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__result._M_current + ((long)__last1 - (long)__first1))" ( (binary_expression "(long)__result._M_current + ((long)__last1 - (long)__first1)" (cast_expression "(long)__result._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__result._M_current" identifier . field_identifier)) + (parenthesized_expression "((long)__last1 - (long)__first1)" ( (binary_expression "(long)__last1 - (long)__first1" (cast_expression "(long)__last1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (__last2 != __first2) {\n    memmove(__dest,__first2,(long)__last2 - (long)__first2);\n  }" if (parenthesized_expression "(__last2 != __first2)" ( (binary_expression "__last2 != __first2" identifier != identifier) )) (compound_statement "{\n    memmove(__dest,__first2,(long)__last2 - (long)__first2);\n  }" { (expression_statement "memmove(__dest,__first2,(long)__last2 - (long)__first2);" (call_expression "memmove(__dest,__first2,(long)__last2 - (long)__first2)" identifier (argument_list "(__dest,__first2,(long)__last2 - (long)__first2)" ( identifier , identifier , (binary_expression "(long)__last2 - (long)__first2" (cast_expression "(long)__last2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (return_statement "return (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n          )(Output_section **)((long)__dest + ((long)__last2 - (long)__first2));" return (call_expression "(__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n          )(Output_section **)((long)__dest + ((long)__last2 - (long)__first2))" (call_expression "(__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n          )(Output_section **)" (parenthesized_expression "(__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n          )" ( (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) )) (argument_list "(Output_section **)" ( (binary_expression "Output_section **" identifier * (pointer_expression "*" * identifier)) ))) (argument_list "((long)__dest + ((long)__last2 - (long)__first2))" ( (binary_expression "(long)__dest + ((long)__last2 - (long)__first2)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)__last2 - (long)__first2)" ( (binary_expression "(long)__last2 - (long)__first2" (cast_expression "(long)__last2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) ;) (ERROR "}" }))
(translation_unit "long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}\n\n" (function_definition "long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined8 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_40[0] = param_6;" (assignment_expression "local_40[0] = param_6" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" if (parenthesized_expression "((param_1 != param_2) && (param_3 != param_4))" ( (binary_expression "(param_1 != param_2) && (param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) && (parenthesized_expression "(param_3 != param_4)" ( (binary_expression "param_3 != param_4" identifier != identifier) ))) )) (compound_statement "{\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" { (expression_statement "puVar3 = param_5;" (assignment_expression "puVar3 = param_5" identifier = identifier) ;) (do_statement "do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));" do (compound_statement "{\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    }" { (expression_statement "cVar2 = FUN_0026be40(local_40,*param_3,*param_1);" (assignment_expression "cVar2 = FUN_0026be40(local_40,*param_3,*param_1)" identifier = (call_expression "FUN_0026be40(local_40,*param_3,*param_1)" identifier (argument_list "(local_40,*param_3,*param_1)" ( identifier , (pointer_expression "*param_3" * identifier) , (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }" { (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) }) (else_clause "else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" else (compound_statement "{\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" { (expression_statement "uVar1 = *param_3;" (assignment_expression "uVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) }))) (expression_statement "param_5 = puVar3 + 1;" (assignment_expression "param_5 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4))" ( (binary_expression "(param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) && (parenthesized_expression "(param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" ( (comma_expression "param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4" (assignment_expression "param_5 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) , (comma_expression "puVar3 = param_5, param_3 != param_4" (assignment_expression "puVar3 = param_5" identifier = identifier) , (binary_expression "param_3 != param_4" identifier != identifier))) ))) )) ;) })) (if_statement "if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" if (parenthesized_expression "(param_2 != param_1)" ( (binary_expression "param_2 != param_1" identifier != identifier) )) (compound_statement "{\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" { (expression_statement "memmove(param_5,param_1,(long)param_2 - (long)param_1);" (call_expression "memmove(param_5,param_1,(long)param_2 - (long)param_1)" identifier (argument_list "(param_5,param_1,(long)param_2 - (long)param_1)" ( identifier , identifier , (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));" (assignment_expression "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1))" identifier = (cast_expression "(void *)((long)param_5 + ((long)param_2 - (long)param_1))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_5 + ((long)param_2 - (long)param_1))" ( (binary_expression "(long)param_5 + ((long)param_2 - (long)param_1)" (cast_expression "(long)param_5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)param_2 - (long)param_1)" ( (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (if_statement "if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" { (expression_statement "memmove(__dest,param_3,(long)param_4 - (long)param_3);" (call_expression "memmove(__dest,param_3,(long)param_4 - (long)param_3)" identifier (argument_list "(__dest,param_3,(long)param_4 - (long)param_3)" ( identifier , identifier , (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (return_statement "return (long)__dest + ((long)param_4 - (long)param_3);" return (binary_expression "(long)__dest + ((long)param_4 - (long)param_3)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)param_4 - (long)param_3)" ( (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (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 IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;) })) (return_statement return (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;) })))
(function_definition "long FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)\n\n{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00276be0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" (identifier "FUN_00276be0") (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,\n                 undefined8 *param_5,undefined8 param_6)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 *param_4" (type_identifier "undefined8") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined8 *param_5" (type_identifier "undefined8") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  char cVar2;\n  undefined8 *puVar3;\n  void *__dest;\n  undefined8 local_40 [2];\n  \n  local_40[0] = param_6;\n  if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }\n  if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }\n  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));\n  if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }\n  return (long)__dest + ((long)param_4 - (long)param_3);\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 local_40 [2];" (type_identifier "undefined8") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "local_40[0] = param_6;" (assignment_expression "local_40[0] = param_6" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_6")) (; ";")) (if_statement "if ((param_1 != param_2) && (param_3 != param_4)) {\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" (if "if") (parenthesized_expression "((param_1 != param_2) && (param_3 != param_4))" (( "(") (binary_expression "(param_1 != param_2) && (param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" (( "(") (binary_expression "param_1 != param_2" (identifier "param_1") (!= "!=") (identifier "param_2")) () ")")) (&& "&&") (parenthesized_expression "(param_3 != param_4)" (( "(") (binary_expression "param_3 != param_4" (identifier "param_3") (!= "!=") (identifier "param_4")) () ")"))) () ")")) (compound_statement "{\n    puVar3 = param_5;\n    do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));\n  }" ({ "{") (expression_statement "puVar3 = param_5;" (assignment_expression "puVar3 = param_5" (identifier "puVar3") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));" (do "do") (compound_statement "{\n      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);\n      if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }\n      param_5 = puVar3 + 1;\n    }" ({ "{") (expression_statement "cVar2 = FUN_0026be40(local_40,*param_3,*param_1);" (assignment_expression "cVar2 = FUN_0026be40(local_40,*param_3,*param_1)" (identifier "cVar2") (= "=") (call_expression "FUN_0026be40(local_40,*param_3,*param_1)" (identifier "FUN_0026be40") (argument_list "(local_40,*param_3,*param_1)" (( "(") (identifier "local_40") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }\n      else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar1 = *param_1;\n        param_1 = param_1 + 1;\n        *puVar3 = uVar1;\n      }" ({ "{") (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" (else "else") (compound_statement "{\n        uVar1 = *param_3;\n        param_3 = param_3 + 1;\n        *puVar3 = uVar1;\n      }" ({ "{") (expression_statement "uVar1 = *param_3;" (assignment_expression "uVar1 = *param_3" (identifier "uVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" (identifier "param_3") (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar1")) (; ";")) (} "}")))) (expression_statement "param_5 = puVar3 + 1;" (assignment_expression "param_5 = puVar3 + 1" (identifier "param_5") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4))" (( "(") (binary_expression "(param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" (parenthesized_expression "(param_1 != param_2)" (( "(") (binary_expression "param_1 != param_2" (identifier "param_1") (!= "!=") (identifier "param_2")) () ")")) (&& "&&") (parenthesized_expression "(param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4)" (( "(") (comma_expression "param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4" (assignment_expression "param_5 = puVar3 + 1" (identifier "param_5") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (, ",") (comma_expression "puVar3 = param_5, param_3 != param_4" (assignment_expression "puVar3 = param_5" (identifier "puVar3") (= "=") (identifier "param_5")) (, ",") (binary_expression "param_3 != param_4" (identifier "param_3") (!= "!=") (identifier "param_4")))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (param_2 != param_1) {\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" (if "if") (parenthesized_expression "(param_2 != param_1)" (( "(") (binary_expression "param_2 != param_1" (identifier "param_2") (!= "!=") (identifier "param_1")) () ")")) (compound_statement "{\n    memmove(param_5,param_1,(long)param_2 - (long)param_1);\n  }" ({ "{") (expression_statement "memmove(param_5,param_1,(long)param_2 - (long)param_1);" (call_expression "memmove(param_5,param_1,(long)param_2 - (long)param_1)" (identifier "memmove") (argument_list "(param_5,param_1,(long)param_2 - (long)param_1)" (( "(") (identifier "param_5") (, ",") (identifier "param_1") (, ",") (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) () ")"))) (; ";")) (} "}"))) (expression_statement "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));" (assignment_expression "__dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1))" (identifier "__dest") (= "=") (cast_expression "(void *)((long)param_5 + ((long)param_2 - (long)param_1))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_5 + ((long)param_2 - (long)param_1))" (( "(") (binary_expression "(long)param_5 + ((long)param_2 - (long)param_1)" (cast_expression "(long)param_5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_5")) (+ "+") (parenthesized_expression "((long)param_2 - (long)param_1)" (( "(") (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) () ")"))) () ")")))) (; ";")) (if_statement "if (param_4 != param_3) {\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" (if "if") (parenthesized_expression "(param_4 != param_3)" (( "(") (binary_expression "param_4 != param_3" (identifier "param_4") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    memmove(__dest,param_3,(long)param_4 - (long)param_3);\n  }" ({ "{") (expression_statement "memmove(__dest,param_3,(long)param_4 - (long)param_3);" (call_expression "memmove(__dest,param_3,(long)param_4 - (long)param_3)" (identifier "memmove") (argument_list "(__dest,param_3,(long)param_4 - (long)param_3)" (( "(") (identifier "__dest") (, ",") (identifier "param_3") (, ",") (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (- "-") (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3"))) () ")"))) (; ";")) (} "}"))) (return_statement "return (long)__dest + ((long)param_4 - (long)param_3);" (return "return") (binary_expression "(long)__dest + ((long)param_4 - (long)param_3)" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (parenthesized_expression "((long)param_4 - (long)param_3)" (( "(") (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (- "-") (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3"))) () ")"))) (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __move_merge<gold::Output_section**,
   __gnu_cxx::__normal_iterator<gold::Output_section**, std::vector<gold::Output_section*> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Sort_output_sections> > */

var_1<var_2::var_18**,var_3::vector<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>var_4>
 var_5::
 __move_merge<var_2::var_18**,var_6::var_1<var_2::var_18**,var_3::vector<var_2::var_18*>var_4>,var_6::__ops::_Iter_comp_iter<var_2::var_7>var_4>
           (var_18 **var_11,var_18 **var_12,var_18 **var_13,
           var_18 **var_14,
           var_1<var_2::var_18**,var_3::vector<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>var_4>
           __result,_Iter_comp_iter<var_2::var_7> var_8)

{
  var_18 *var_9;
  bool bVar2;
  var_1<var_2::var_18**,var_3::vector<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>var_4>
  var_10;
  void *__dest;
  var_7 local_40 [2];
  
  local_40[0].elements_ = (type_1 *)var_8._M_comp.elements_;
  if ((var_11 != var_12) && (var_13 != var_14)) {
    var_10._M_current = __result._M_current;
    do {
      bVar2 = var_2::Sort_output_sections::var_15()(local_40,*var_13,*var_11);
      if (bVar2) {
        var_9 = *var_13;
        var_13 = var_13 + 1;
        *var_10._M_current = var_9;
      }
      else {
        var_9 = *var_11;
        var_11 = var_11 + 1;
        *var_10._M_current = var_9;
      }
      __result._M_current = var_10._M_current + 1;
    } while ((var_11 != var_12) &&
            (__result._M_current = var_10._M_current + 1, var_10._M_current = __result._M_current,
            var_13 != var_14));
  }
  if (var_12 != var_11) {
    var_16(__result._M_current,var_11,(long)var_12 - (long)var_11);
  }
  __dest = (void *)((long)__result._M_current + ((long)var_12 - (long)var_11));
  if (var_14 != var_13) {
    var_16(__dest,var_13,(long)var_14 - (long)var_13);
  }
  return (var_1<var_2::var_18**,var_3::vector<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>var_4>var_17
          )(var_18 **var_17)((long)__dest + ((long)var_14 - (long)var_13));
}


(translation_unit (function_definition type: (sized_type_specifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))) (return_statement (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))))

long MASKED(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
                 undefined8 *param_5,undefined8 param_6)

{
  undefined8 uVar1;
  char cVar2;
  undefined8 *puVar3;
  void *__dest;
  undefined8 local_40 [2];
  
  local_40[0] = param_6;
  if ((param_1 != param_2) && (param_3 != param_4)) {
    puVar3 = param_5;
    do {
      cVar2 = FUN_0026be40(local_40,*param_3,*param_1);
      if (cVar2 == '\0') {
        uVar1 = *param_1;
        param_1 = param_1 + 1;
        *puVar3 = uVar1;
      }
      else {
        uVar1 = *param_3;
        param_3 = param_3 + 1;
        *puVar3 = uVar1;
      }
      param_5 = puVar3 + 1;
    } while ((param_1 != param_2) && (param_5 = puVar3 + 1, puVar3 = param_5, param_3 != param_4));
  }
  if (param_2 != param_1) {
    memmove(param_5,param_1,(long)param_2 - (long)param_1);
  }
  __dest = (void *)((long)param_5 + ((long)param_2 - (long)param_1));
  if (param_4 != param_3) {
    memmove(__dest,param_3,(long)param_4 - (long)param_3);
  }
  return (long)__dest + ((long)param_4 - (long)param_3);
}

