
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* WARNING: Enum "DT": Some values do not have unique names */
/* 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)

{
  Output_segment *pOVar1;
  bool bVar2;
  _Iter_comp_iter<gold::Layout::Compare_segments> _Var3;
  void *__dest;
  Layout *in_stack_0000001c;
  
  _Var3._M_comp.layout_ = __comp._M_comp.layout_;
  if (__last1 != __first2) {
    do {
      while( true ) {
        __comp._M_comp.layout_ = _Var3._M_comp.layout_;
        if (__last2 == __result._M_current) goto LAB_000adf9d;
        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);
        if (bVar2) break;
        pOVar1 = *__last1;
        __last1 = __last1 + 1;
        __comp._M_comp.layout_ =
             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;
        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
        _Var3._M_comp.layout_ = __comp._M_comp.layout_;
        if (__last1 == __first2) goto LAB_000adf9d;
      }
      pOVar1 = *__last2;
      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_
      ;
      __last2 = __last2 + 1;
      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;
      _Var3._M_comp.layout_ = __comp._M_comp.layout_;
    } while (__last1 != __first2);
  }
LAB_000adf9d:
  if (__first2 != __last1) {
    memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);
  }
  __dest = (void *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));
  if (__result._M_current != __last2) {
    memmove(__dest,__last2,(int)__result._M_current - (int)__last2);
  }
  *__first1 = (Output_segment *)((int)__dest + ((int)__result._M_current - (int)__last2));
  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
          )__first1;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  void *__dest;
  
  puVar3 = param_6;
  if (param_2 != param_3) {
    do {
      while( true ) {
        param_6 = puVar3;
        if (param_4 == param_5) goto LAB_000adf9d;
        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);
        if (cVar2 != '\0') break;
        uVar1 = *param_2;
        param_2 = param_2 + 1;
        param_6 = puVar3 + 1;
        *puVar3 = uVar1;
        puVar3 = param_6;
        if (param_2 == param_3) goto LAB_000adf9d;
      }
      uVar1 = *param_4;
      param_6 = puVar3 + 1;
      param_4 = param_4 + 1;
      *puVar3 = uVar1;
      puVar3 = param_6;
    } while (param_2 != param_3);
  }
LAB_000adf9d:
  if (param_3 != param_2) {
    memmove(param_6,param_2,(int)param_3 - (int)param_2);
  }
  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));
  if (param_5 != param_4) {
    memmove(__dest,param_4,(int)param_5 - (int)param_4);
  }
  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);
  return;
}


CALL 0x000559e6
ADD EAX,0x2e10cb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x34]
MOV EBX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x8],EAX
MOV ESI,dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [ESP + 0x44]
CMP EBP,EBX
JNZ 0x000adf6f
JMP 0x000adf9d
MOV EAX,dword ptr [ESI]
ADD EDI,0x4
ADD ESI,0x4
MOV dword ptr [EDI + -0x4],EAX
CMP EBP,EBX
JZ 0x000adf9d
CMP ESI,dword ptr [ESP + 0x40]
JZ 0x000adf9d
SUB ESP,0x4
PUSH dword ptr [EBP]
PUSH dword ptr [ESI]
PUSH dword ptr [ESP + 0x54]
CALL 0x00097eb0
ADD ESP,0x10
TEST AL,AL
JNZ 0x000adf60
MOV EAX,dword ptr [EBP]
ADD EBP,0x4
ADD EDI,0x4
MOV dword ptr [EDI + -0x4],EAX
CMP EBP,EBX
JNZ 0x000adf6f
MOV EDX,EBX
SUB EDX,EBP
CMP EBX,EBP
JZ 0x000adfbf
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
PUSH EBP
PUSH EDI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000298a0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
ADD EDI,EDX
MOV EDX,dword ptr [ESP + 0x40]
SUB EDX,ESI
CMP dword ptr [ESP + 0x40],ESI
JZ 0x000adfe7
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
PUSH ESI
PUSH EDI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000298a0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x30]
ADD EDI,EDX
MOV dword ptr [EAX],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}\n\n" comment (function_definition "void FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" primitive_type (function_declarator "FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)" identifier (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 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 "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" { (do_statement "do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);" do (compound_statement "{\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    }" { (while_statement "while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" { (expression_statement "param_6 = puVar3;" (assignment_expression "param_6 = puVar3" identifier = identifier) ;) (if_statement "if (param_4 == param_5) goto LAB_000adf9d;" if (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) (expression_statement "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);" (assignment_expression "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2)" identifier = (call_expression "FUN_00097eb0(param_7,*param_4,*param_2)" identifier (argument_list "(param_7,*param_4,*param_2)" ( identifier , (pointer_expression "*param_4" * identifier) , (pointer_expression "*param_2" * identifier) )))) ;) (if_statement "if (cVar2 != '\0') break;" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *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 "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_2 == param_3) goto LAB_000adf9d;" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) })) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (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 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) ;) })) (labeled_statement "LAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" statement_identifier : (if_statement "if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) (compound_statement "{\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "memmove(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "memmove(param_6,param_2,(int)param_3 - (int)param_2)" 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 "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));" (assignment_expression "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2))" identifier = (cast_expression "(void *)((int)param_6 + ((int)param_3 - (int)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_6 + ((int)param_3 - (int)param_2))" ( (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)) ))) )))) ;) (if_statement "if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" if (parenthesized_expression "(param_5 != param_4)" ( (binary_expression "param_5 != param_4" identifier != identifier) )) (compound_statement "{\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" { (expression_statement "memmove(__dest,param_4,(int)param_5 - (int)param_4);" (call_expression "memmove(__dest,param_4,(int)param_5 - (int)param_4)" identifier (argument_list "(__dest,param_4,(int)param_5 - (int)param_4)" ( identifier , identifier , (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)) ))) ;) })) (expression_statement "*param_1 = (int)__dest + ((int)param_5 - (int)param_4);" (assignment_expression "*param_1 = (int)__dest + ((int)param_5 - (int)param_4)" (pointer_expression "*param_1" * identifier) = (binary_expression "(int)__dest + ((int)param_5 - (int)param_4)" (cast_expression "(int)__dest" ( (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)) )))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* WARNING: Enum "DT": Some values do not have unique names */\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  Output_segment *pOVar1;\n  bool bVar2;\n  _Iter_comp_iter<gold::Layout::Compare_segments> _Var3;\n  void *__dest;\n  Layout *in_stack_0000001c;\n  \n  _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n  if (__last1 != __first2) {\n    do {\n      while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }\n      pOVar1 = *__last2;\n      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;\n      __last2 = __last2 + 1;\n      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n      _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    } while (__last1 != __first2);\n  }\nLAB_000adf9d:\n  if (__first2 != __last1) {\n    memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }\n  __dest = (void *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));\n  if (__result._M_current != __last2) {\n    memmove(__dest,__last2,(int)__result._M_current - (int)__last2);\n  }\n  *__first1 = (Output_segment *)((int)__dest + ((int)__result._M_current - (int)__last2));\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 (expression_statement "__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  Output_segment *pOVar1;" (update_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)\n\n{\n  Output_segment *pOVar1" (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)\n\n{\n  Output_segment *pOVar1" (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) > (binary_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)\n\n{\n  Output_segment *pOVar1" (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) )) (ERROR "{\n  Output_segment" { identifier) * identifier)) --) ;) (declaration "bool bVar2;" primitive_type 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 "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "Layout *in_stack_0000001c;" type_identifier (pointer_declarator "*in_stack_0000001c" * 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)) ;) (if_statement "if (__last1 != __first2) {\n    do {\n      while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }\n      pOVar1 = *__last2;\n      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;\n      __last2 = __last2 + 1;\n      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n      _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    } while (__last1 != __first2);\n  }" if (parenthesized_expression "(__last1 != __first2)" ( (binary_expression "__last1 != __first2" identifier != identifier) )) (compound_statement "{\n    do {\n      while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }\n      pOVar1 = *__last2;\n      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;\n      __last2 = __last2 + 1;\n      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n      _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    } while (__last1 != __first2);\n  }" { (do_statement "do {\n      while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }\n      pOVar1 = *__last2;\n      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;\n      __last2 = __last2 + 1;\n      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n      _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    } while (__last1 != __first2);" do (compound_statement "{\n      while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }\n      pOVar1 = *__last2;\n      __comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;\n      __last2 = __last2 + 1;\n      ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n      _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n    }" { (while_statement "while( true ) {\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        __comp._M_comp.layout_ = _Var3._M_comp.layout_;\n        if (__last2 == __result._M_current) goto LAB_000adf9d;\n        bVar2 = gold::Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);\n        if (bVar2) break;\n        pOVar1 = *__last1;\n        __last1 = __last1 + 1;\n        __comp._M_comp.layout_ =\n             (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_;\n        ((Layout *)_Var3._M_comp.layout_)->number_of_input_files_ = (int)pOVar1;\n        _Var3._M_comp.layout_ = __comp._M_comp.layout_;\n        if (__last1 == __first2) goto LAB_000adf9d;\n      }" { (expression_statement "__comp._M_comp.layout_ = _Var3._M_comp.layout_;" (assignment_expression "__comp._M_comp.layout_ = _Var3._M_comp.layout_" (field_expression "__comp._M_comp.layout_" (field_expression "__comp._M_comp" identifier . field_identifier) . field_identifier) = (field_expression "_Var3._M_comp.layout_" (field_expression "_Var3._M_comp" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (__last2 == __result._M_current) goto LAB_000adf9d;" if (parenthesized_expression "(__last2 == __result._M_current)" ( (binary_expression "__last2 == __result._M_current" identifier == (field_expression "__result._M_current" identifier . field_identifier)) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) (ERROR "bVar2 = gold::" (assignment_expression "bVar2 = gold" identifier = identifier) : :) (labeled_statement "Layout::segment_precedes(in_stack_0000001c,*__last2,*__last1);" statement_identifier : (ERROR ":" :) (expression_statement "segment_precedes(in_stack_0000001c,*__last2,*__last1);" (call_expression "segment_precedes(in_stack_0000001c,*__last2,*__last1)" identifier (argument_list "(in_stack_0000001c,*__last2,*__last1)" ( identifier , (pointer_expression "*__last2" * identifier) , (pointer_expression "*__last1" * identifier) ))) ;)) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (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 "__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 "((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 "_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 (__last1 == __first2) goto LAB_000adf9d;" if (parenthesized_expression "(__last1 == __first2)" ( (binary_expression "__last1 == __first2" identifier == identifier) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) })) (expression_statement "pOVar1 = *__last2;" (assignment_expression "pOVar1 = *__last2" identifier = (pointer_expression "*__last2" * identifier)) ;) (expression_statement "__comp._M_comp.layout_ = (Compare_segments)&((Layout *)_Var3._M_comp.layout_)->script_options_\n      ;" (assignment_expression "__comp._M_comp.layout_ = (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 "__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 "_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 "(__last1 != __first2)" ( (binary_expression "__last1 != __first2" identifier != identifier) )) ;) })) (labeled_statement "LAB_000adf9d:\n  if (__first2 != __last1) {\n    memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" statement_identifier : (if_statement "if (__first2 != __last1) {\n    memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" if (parenthesized_expression "(__first2 != __last1)" ( (binary_expression "__first2 != __last1" identifier != identifier) )) (compound_statement "{\n    memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);\n  }" { (expression_statement "memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1);" (call_expression "memmove((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1)" identifier (argument_list "((void *)__comp._M_comp.layout_,__last1,(int)__first2 - (int)__last1)" ( (cast_expression "(void *)__comp._M_comp.layout_" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (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 "__dest = (void *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1));" (assignment_expression "__dest = (void *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1))" identifier = (cast_expression "(void *)((int)__comp._M_comp.layout_ + ((int)__first2 - (int)__last1))" ( (type_descriptor "void *" primitive_type (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)) ))) )))) ;) (if_statement "if (__result._M_current != __last2) {\n    memmove(__dest,__last2,(int)__result._M_current - (int)__last2);\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    memmove(__dest,__last2,(int)__result._M_current - (int)__last2);\n  }" { (expression_statement "memmove(__dest,__last2,(int)__result._M_current - (int)__last2);" (call_expression "memmove(__dest,__last2,(int)__result._M_current - (int)__last2)" identifier (argument_list "(__dest,__last2,(int)__result._M_current - (int)__last2)" ( identifier , identifier , (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)) ))) ;) })) (expression_statement "*__first1 = (Output_segment *)((int)__dest + ((int)__result._M_current - (int)__last2));" (assignment_expression "*__first1 = (Output_segment *)((int)__dest + ((int)__result._M_current - (int)__last2))" (pointer_expression "*__first1" * identifier) = (cast_expression "(Output_segment *)((int)__dest + ((int)__result._M_current - (int)__last2))" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + ((int)__result._M_current - (int)__last2))" ( (binary_expression "(int)__dest + ((int)__result._M_current - (int)__last2)" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) 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)) ))) )))) ;) (ERROR "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first1;\n}" return ( (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 "void FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}\n\n" (function_definition "void FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" primitive_type (function_declarator "FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)" identifier (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 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 "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" { (do_statement "do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);" do (compound_statement "{\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    }" { (while_statement "while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" { (expression_statement "param_6 = puVar3;" (assignment_expression "param_6 = puVar3" identifier = identifier) ;) (if_statement "if (param_4 == param_5) goto LAB_000adf9d;" if (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) (expression_statement "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);" (assignment_expression "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2)" identifier = (call_expression "FUN_00097eb0(param_7,*param_4,*param_2)" identifier (argument_list "(param_7,*param_4,*param_2)" ( identifier , (pointer_expression "*param_4" * identifier) , (pointer_expression "*param_2" * identifier) )))) ;) (if_statement "if (cVar2 != '\0') break;" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *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 "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "*puVar3 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) (if_statement "if (param_2 == param_3) goto LAB_000adf9d;" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (goto_statement "goto LAB_000adf9d;" goto statement_identifier ;)) })) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "param_6 = puVar3 + 1;" (assignment_expression "param_6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (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 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) ;) })) (labeled_statement "LAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" statement_identifier : (if_statement "if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) (compound_statement "{\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "memmove(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "memmove(param_6,param_2,(int)param_3 - (int)param_2)" 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 "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));" (assignment_expression "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2))" identifier = (cast_expression "(void *)((int)param_6 + ((int)param_3 - (int)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_6 + ((int)param_3 - (int)param_2))" ( (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)) ))) )))) ;) (if_statement "if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" if (parenthesized_expression "(param_5 != param_4)" ( (binary_expression "param_5 != param_4" identifier != identifier) )) (compound_statement "{\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" { (expression_statement "memmove(__dest,param_4,(int)param_5 - (int)param_4);" (call_expression "memmove(__dest,param_4,(int)param_5 - (int)param_4)" identifier (argument_list "(__dest,param_4,(int)param_5 - (int)param_4)" ( identifier , identifier , (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)) ))) ;) })) (expression_statement "*param_1 = (int)__dest + ((int)param_5 - (int)param_4);" (assignment_expression "*param_1 = (int)__dest + ((int)param_5 - (int)param_4)" (pointer_expression "*param_1" * identifier) = (binary_expression "(int)__dest + ((int)param_5 - (int)param_4)" (cast_expression "(int)__dest" ( (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)) )))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (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 (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (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 TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 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) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (return_statement return ;) })))
(function_definition "void FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)\n\n{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000adf30(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)" (identifier "FUN_000adf30") (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,\n                 undefined4 *param_5,undefined4 *param_6,undefined4 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 "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  void *__dest;\n  \n  puVar3 = param_6;\n  if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }\nLAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }\n  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));\n  if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }\n  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" (identifier "puVar3") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_2 != param_3) {\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" (if "if") (parenthesized_expression "(param_2 != param_3)" (( "(") (binary_expression "param_2 != param_3" (identifier "param_2") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    } while (param_2 != param_3);" (do "do") (compound_statement "{\n      while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }\n      uVar1 = *param_4;\n      param_6 = puVar3 + 1;\n      param_4 = param_4 + 1;\n      *puVar3 = uVar1;\n      puVar3 = param_6;\n    }" ({ "{") (while_statement "while( true ) {\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        param_6 = puVar3;\n        if (param_4 == param_5) goto LAB_000adf9d;\n        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);\n        if (cVar2 != '\0') break;\n        uVar1 = *param_2;\n        param_2 = param_2 + 1;\n        param_6 = puVar3 + 1;\n        *puVar3 = uVar1;\n        puVar3 = param_6;\n        if (param_2 == param_3) goto LAB_000adf9d;\n      }" ({ "{") (expression_statement "param_6 = puVar3;" (assignment_expression "param_6 = puVar3" (identifier "param_6") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (param_4 == param_5) goto LAB_000adf9d;" (if "if") (parenthesized_expression "(param_4 == param_5)" (( "(") (binary_expression "param_4 == param_5" (identifier "param_4") (== "==") (identifier "param_5")) () ")")) (goto_statement "goto LAB_000adf9d;" (goto "goto") (statement_identifier "LAB_000adf9d") (; ";"))) (expression_statement "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);" (assignment_expression "cVar2 = FUN_00097eb0(param_7,*param_4,*param_2)" (identifier "cVar2") (= "=") (call_expression "FUN_00097eb0(param_7,*param_4,*param_2)" (identifier "FUN_00097eb0") (argument_list "(param_7,*param_4,*param_2)" (( "(") (identifier "param_7") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') break;" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar1 = *param_2;" (assignment_expression "uVar1 = *param_2" (identifier "uVar1") (= "=") (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 "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 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" (identifier "puVar3") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_2 == param_3) goto LAB_000adf9d;" (if "if") (parenthesized_expression "(param_2 == param_3)" (( "(") (binary_expression "param_2 == param_3" (identifier "param_2") (== "==") (identifier "param_3")) () ")")) (goto_statement "goto LAB_000adf9d;" (goto "goto") (statement_identifier "LAB_000adf9d") (; ";"))) (} "}"))) (expression_statement "uVar1 = *param_4;" (assignment_expression "uVar1 = *param_4" (identifier "uVar1") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (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 "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 = uVar1;" (assignment_expression "*puVar3 = uVar1" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar3 = param_6;" (assignment_expression "puVar3 = param_6" (identifier "puVar3") (= "=") (identifier "param_6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != param_3)" (( "(") (binary_expression "param_2 != param_3" (identifier "param_2") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000adf9d:\n  if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" (statement_identifier "LAB_000adf9d") (: ":") (if_statement "if (param_3 != param_2) {\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" (if "if") (parenthesized_expression "(param_3 != param_2)" (( "(") (binary_expression "param_3 != param_2" (identifier "param_3") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n    memmove(param_6,param_2,(int)param_3 - (int)param_2);\n  }" ({ "{") (expression_statement "memmove(param_6,param_2,(int)param_3 - (int)param_2);" (call_expression "memmove(param_6,param_2,(int)param_3 - (int)param_2)" (identifier "memmove") (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 "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));" (assignment_expression "__dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2))" (identifier "__dest") (= "=") (cast_expression "(void *)((int)param_6 + ((int)param_3 - (int)param_2))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_6 + ((int)param_3 - (int)param_2))" (( "(") (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"))) () ")"))) () ")")))) (; ";")) (if_statement "if (param_5 != param_4) {\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" (if "if") (parenthesized_expression "(param_5 != param_4)" (( "(") (binary_expression "param_5 != param_4" (identifier "param_5") (!= "!=") (identifier "param_4")) () ")")) (compound_statement "{\n    memmove(__dest,param_4,(int)param_5 - (int)param_4);\n  }" ({ "{") (expression_statement "memmove(__dest,param_4,(int)param_5 - (int)param_4);" (call_expression "memmove(__dest,param_4,(int)param_5 - (int)param_4)" (identifier "memmove") (argument_list "(__dest,param_4,(int)param_5 - (int)param_4)" (( "(") (identifier "__dest") (, ",") (identifier "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"))) () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (int)__dest + ((int)param_5 - (int)param_4);" (assignment_expression "*param_1 = (int)__dest + ((int)param_5 - (int)param_4)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "(int)__dest + ((int)param_5 - (int)param_4)" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (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"))) () ")")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* WARNING: Enum "DT": Some values do not have unique names */
/* 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_1<var_2::type_2**,var_3::vector<var_2::type_2*,var_3::allocator<var_2::type_2*>var_4>var_4>
 var_5::
 __move_merge<var_2::type_2**,var_6::var_1<var_2::type_2**,var_3::vector<var_2::type_2*>var_4>,var_6::__ops::_Iter_comp_iter<var_2::type_1::var_7>var_4>
           (type_2 **__first1,type_2 **var_11,type_2 **var_12,
           type_2 **var_13,
           var_1<var_2::type_2**,var_3::vector<var_2::type_2*,var_3::allocator<var_2::type_2*>var_4>var_4>
           __result,_Iter_comp_iter<var_2::type_1::var_7> var_8)

{
  type_2 *var_9;
  bool bVar2;
  _Iter_comp_iter<var_2::Layout::var_7> var_10;
  void *__dest;
  type_1 *in_stack_0000001c;
  
  var_10._M_comp.layout_ = var_8._M_comp.layout_;
  if (var_11 != var_12) {
    do {
      while( true ) {
        var_8._M_comp.layout_ = var_10._M_comp.layout_;
        if (var_13 == __result._M_current) goto LAB_000adf9d;
        bVar2 = var_2::Layout::var_14(in_stack_0000001c,*var_13,*var_11);
        if (bVar2) break;
        var_9 = *var_11;
        var_11 = var_11 + 1;
        var_8._M_comp.layout_ =
             (var_7)&((type_1 *)var_10._M_comp.layout_)->script_options_;
        ((type_1 *)var_10._M_comp.layout_)->number_of_input_files_ = (int)var_9;
        var_10._M_comp.layout_ = var_8._M_comp.layout_;
        if (var_11 == var_12) goto LAB_000adf9d;
      }
      var_9 = *var_13;
      var_8._M_comp.layout_ = (var_7)&((type_1 *)var_10._M_comp.layout_)->script_options_
      ;
      var_13 = var_13 + 1;
      ((type_1 *)var_10._M_comp.layout_)->number_of_input_files_ = (int)var_9;
      var_10._M_comp.layout_ = var_8._M_comp.layout_;
    } while (var_11 != var_12);
  }
LAB_000adf9d:
  if (var_12 != var_11) {
    var_15((void *)var_8._M_comp.layout_,var_11,(int)var_12 - (int)var_11);
  }
  __dest = (void *)((int)var_8._M_comp.layout_ + ((int)var_12 - (int)var_11));
  if (__result._M_current != var_13) {
    var_15(__dest,var_13,(int)__result._M_current - (int)var_13);
  }
  *__first1 = (type_2 *)((int)__dest + ((int)__result._M_current - (int)var_13));
  return (var_1<var_2::type_2**,var_3::vector<var_2::type_2*,var_3::allocator<var_2::type_2*>var_4>var_4>
          )__first1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) 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: (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))) (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 (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (break_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: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_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: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (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: (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: (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))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  void *__dest;
  
  puVar3 = param_6;
  if (param_2 != param_3) {
    do {
      while( true ) {
        param_6 = puVar3;
        if (param_4 == param_5) goto LAB_000adf9d;
        cVar2 = FUN_00097eb0(param_7,*param_4,*param_2);
        if (cVar2 != '\0') break;
        uVar1 = *param_2;
        param_2 = param_2 + 1;
        param_6 = puVar3 + 1;
        *puVar3 = uVar1;
        puVar3 = param_6;
        if (param_2 == param_3) goto LAB_000adf9d;
      }
      uVar1 = *param_4;
      param_6 = puVar3 + 1;
      param_4 = param_4 + 1;
      *puVar3 = uVar1;
      puVar3 = param_6;
    } while (param_2 != param_3);
  }
LAB_000adf9d:
  if (param_3 != param_2) {
    memmove(param_6,param_2,(int)param_3 - (int)param_2);
  }
  __dest = (void *)((int)param_6 + ((int)param_3 - (int)param_2));
  if (param_5 != param_4) {
    memmove(__dest,param_4,(int)param_5 - (int)param_4);
  }
  *param_1 = (int)__dest + ((int)param_5 - (int)param_4);
  return;
}

