
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,
   std::vector<gold::Object_merge_map::Input_merge_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare> > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
               (long *__first,long *__last)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long *plVar6;
  
  if (__last == __first) {
    return;
  }
  plVar6 = __first + 3;
  do {
    if (plVar6 == __last) {
      return;
    }
    while( true ) {
      lVar1 = *plVar6;
      lVar2 = plVar6[1];
      lVar3 = plVar6[2];
      if (lVar1 < *__first) break;
      plVar5 = plVar6;
      if (lVar1 < plVar6[-3]) {
        do {
          plVar4 = plVar5;
          plVar5 = plVar4 + -3;
          plVar4[2] = plVar4[-1];
          *plVar4 = *plVar5;
          plVar4[1] = plVar4[-2];
        } while (lVar1 < plVar4[-6]);
        *plVar5 = lVar1;
        plVar4[-2] = lVar2;
        plVar4[-1] = lVar3;
      }
      else {
        *plVar6 = lVar1;
        plVar6[1] = lVar2;
        plVar6[2] = lVar3;
      }
      plVar6 = plVar6 + 3;
      if (__last == plVar6) {
        return;
      }
    }
    if (__first != plVar6) {
      memmove(__first + 3,__first,(long)plVar6 - (long)__first);
    }
    plVar6 = plVar6 + 3;
    *__first = lVar1;
    __first[1] = lVar2;
    __first[2] = lVar3;
  } while( true );
}



void FUN_00258210(long *param_1,long *param_2)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long *plVar6;
  
  if (param_2 == param_1) {
    return;
  }
  plVar6 = param_1 + 3;
  do {
    if (plVar6 == param_2) {
      return;
    }
    while( true ) {
      lVar1 = *plVar6;
      lVar2 = plVar6[1];
      lVar3 = plVar6[2];
      if (lVar1 < *param_1) break;
      plVar5 = plVar6;
      if (lVar1 < plVar6[-3]) {
        do {
          plVar4 = plVar5;
          plVar5 = plVar4 + -3;
          plVar4[2] = plVar4[-1];
          *plVar4 = *plVar5;
          plVar4[1] = plVar4[-2];
        } while (lVar1 < plVar4[-6]);
        *plVar5 = lVar1;
        plVar4[-2] = lVar2;
        plVar4[-1] = lVar3;
      }
      else {
        *plVar6 = lVar1;
        plVar6[1] = lVar2;
        plVar6[2] = lVar3;
      }
      plVar6 = plVar6 + 3;
      if (param_2 == plVar6) {
        return;
      }
    }
    if (param_1 != plVar6) {
      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);
    }
    plVar6 = plVar6 + 3;
    *param_1 = lVar1;
    param_1[1] = lVar2;
    param_1[2] = lVar3;
  } while( true );
}


CMP RSI,RDI
JZ 0x002582e0
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
LEA RBX,[RDI + 0x18]
SUB RSP,0x8
CMP RBX,RSI
JZ 0x002582c1
MOV R13,RSI
MOV RBP,RDI
JMP 0x00258272
CMP RBP,RBX
JZ 0x0025825d
MOV RDX,RBX
MOV EAX,0x18
MOV RSI,RBP
SUB RDX,RBP
LEA RDI,[RBP + RAX*0x1]
CALL 0x0013e6d0
ADD RBX,0x18
MOV qword ptr [RBP],R12
MOV qword ptr [RBP + 0x8],R15
MOV qword ptr [RBP + 0x10],R14
CMP R13,RBX
JZ 0x002582c1
MOV R12,qword ptr [RBX]
MOV R15,qword ptr [RBX + 0x8]
MOV R14,qword ptr [RBX + 0x10]
CMP R12,qword ptr [RBP]
JL 0x00258240
LEA RAX,[RBX + -0x18]
CMP R12,qword ptr [RBX + -0x18]
JL 0x00258293
JMP 0x002582d0
MOV RAX,RDX
MOV RDX,qword ptr [RAX + 0x10]
MOVDQU XMM0,xmmword ptr [RAX]
MOV qword ptr [RAX + 0x28],RDX
LEA RDX,[RAX + -0x18]
MOVUPS xmmword ptr [RAX + 0x18],XMM0
CMP R12,qword ptr [RAX + -0x18]
JL 0x00258290
MOV qword ptr [RAX],R12
MOV qword ptr [RAX + 0x8],R15
MOV qword ptr [RAX + 0x10],R14
ADD RBX,0x18
CMP R13,RBX
JNZ 0x00258272
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,RBX
MOV qword ptr [RAX],R12
MOV qword ptr [RAX + 0x8],R15
MOV qword ptr [RAX + 0x10],R14
JMP 0x002582b8
RET
(translation_unit "void FUN_00258210(long *param_1,long *param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}\n\n" (function_definition "void FUN_00258210(long *param_1,long *param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00258210(long *param_1,long *param_2)" identifier (parameter_list "(long *param_1,long *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (if_statement "if (param_2 == param_1) {\n    return;\n  }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar6 = param_1 + 3;" (assignment_expression "plVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );" do (compound_statement "{\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  }" { (if_statement "if (plVar6 == param_2) {\n      return;\n    }" if (parenthesized_expression "(plVar6 == param_2)" ( (binary_expression "plVar6 == param_2" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (while_statement "while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" { (expression_statement "lVar1 = *plVar6;" (assignment_expression "lVar1 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar2 = plVar6[1];" (assignment_expression "lVar2 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "lVar3 = plVar6[2];" (assignment_expression "lVar3 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar1 < *param_1) break;" if (parenthesized_expression "(lVar1 < *param_1)" ( (binary_expression "lVar1 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (if_statement "if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" if (parenthesized_expression "(lVar1 < plVar6[-3])" ( (binary_expression "lVar1 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }" { (do_statement "do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);" do (compound_statement "{\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        }" { (expression_statement "plVar4 = plVar5;" (assignment_expression "plVar4 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = plVar4 + -3;" (assignment_expression "plVar5 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) (expression_statement "plVar4[2] = plVar4[-1];" (assignment_expression "plVar4[2] = plVar4[-1]" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (subscript_expression "plVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar4 = *plVar5;" (assignment_expression "*plVar4 = *plVar5" (pointer_expression "*plVar4" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "plVar4[1] = plVar4[-2];" (assignment_expression "plVar4[1] = plVar4[-2]" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (subscript_expression "plVar4[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar1 < plVar4[-6])" ( (binary_expression "lVar1 < plVar4[-6]" identifier < (subscript_expression "plVar4[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar5 = lVar1;" (assignment_expression "*plVar5 = lVar1" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar4[-2] = lVar2;" (assignment_expression "plVar4[-2] = lVar2" (subscript_expression "plVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar4[-1] = lVar3;" (assignment_expression "plVar4[-1] = lVar3" (subscript_expression "plVar4[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" else (compound_statement "{\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" { (expression_statement "*plVar6 = lVar1;" (assignment_expression "*plVar6 = lVar1" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar2;" (assignment_expression "plVar6[1] = lVar2" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar3;" (assignment_expression "plVar6[2] = lVar3" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (if_statement "if (param_2 == plVar6) {\n        return;\n      }" if (parenthesized_expression "(param_2 == plVar6)" ( (binary_expression "param_2 == plVar6" identifier == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" if (parenthesized_expression "(param_1 != plVar6)" ( (binary_expression "param_1 != plVar6" identifier != identifier) )) (compound_statement "{\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" { (expression_statement "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);" (call_expression "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" identifier (argument_list "(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" ( (binary_expression "param_1 + 3" identifier + number_literal) , identifier , (binary_expression "(long)plVar6 - (long)param_1" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "*param_1 = lVar1;" (assignment_expression "*param_1 = lVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = lVar2;" (assignment_expression "param_1[1] = lVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = lVar3;" (assignment_expression "param_1[2] = lVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,\n   std::vector<gold::Object_merge_map::Input_merge_entry> >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare> > */\n\nvoid std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (__last == __first) {\n    return;\n  }\n  plVar6 = __first + 3;\n  do {\n    if (plVar6 == __last) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *__first) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (__last == plVar6) {\n        return;\n      }\n    }\n    if (__first != plVar6) {\n      memmove(__first + 3,__first,(long)plVar6 - (long)__first);\n    }\n    plVar6 = plVar6 + 3;\n    *__first = lVar1;\n    __first[1] = lVar2;\n    __first[2] = lVar3;\n  } while( true );\n}\n\n" comment comment (declaration "void std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last)\n\n{\n  long lVar1;" primitive_type (ERROR "std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Object_merge_map::Input_merge_entry>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last)\n\n{\n  long" identifier : : identifier : : identifier < identifier : : identifier : : identifier > (function_declarator "_>\n               (long *__first,long *__last)" identifier (ERROR ">" >) (parameter_list "(long *__first,long *__last)" ( (parameter_declaration "long *__first" (sized_type_specifier "long" long) (pointer_declarator "*__first" * identifier)) , (parameter_declaration "long *__last" (sized_type_specifier "long" long) (pointer_declarator "*__last" * identifier)) ))) { long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (if_statement "if (__last == __first) {\n    return;\n  }" if (parenthesized_expression "(__last == __first)" ( (binary_expression "__last == __first" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar6 = __first + 3;" (assignment_expression "plVar6 = __first + 3" identifier = (binary_expression "__first + 3" identifier + number_literal)) ;) (do_statement "do {\n    if (plVar6 == __last) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *__first) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (__last == plVar6) {\n        return;\n      }\n    }\n    if (__first != plVar6) {\n      memmove(__first + 3,__first,(long)plVar6 - (long)__first);\n    }\n    plVar6 = plVar6 + 3;\n    *__first = lVar1;\n    __first[1] = lVar2;\n    __first[2] = lVar3;\n  } while( true );" do (compound_statement "{\n    if (plVar6 == __last) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *__first) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (__last == plVar6) {\n        return;\n      }\n    }\n    if (__first != plVar6) {\n      memmove(__first + 3,__first,(long)plVar6 - (long)__first);\n    }\n    plVar6 = plVar6 + 3;\n    *__first = lVar1;\n    __first[1] = lVar2;\n    __first[2] = lVar3;\n  }" { (if_statement "if (plVar6 == __last) {\n      return;\n    }" if (parenthesized_expression "(plVar6 == __last)" ( (binary_expression "plVar6 == __last" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (while_statement "while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *__first) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (__last == plVar6) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *__first) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (__last == plVar6) {\n        return;\n      }\n    }" { (expression_statement "lVar1 = *plVar6;" (assignment_expression "lVar1 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar2 = plVar6[1];" (assignment_expression "lVar2 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "lVar3 = plVar6[2];" (assignment_expression "lVar3 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar1 < *__first) break;" if (parenthesized_expression "(lVar1 < *__first)" ( (binary_expression "lVar1 < *__first" identifier < (pointer_expression "*__first" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (if_statement "if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" if (parenthesized_expression "(lVar1 < plVar6[-3])" ( (binary_expression "lVar1 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }" { (do_statement "do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);" do (compound_statement "{\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        }" { (expression_statement "plVar4 = plVar5;" (assignment_expression "plVar4 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = plVar4 + -3;" (assignment_expression "plVar5 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) (expression_statement "plVar4[2] = plVar4[-1];" (assignment_expression "plVar4[2] = plVar4[-1]" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (subscript_expression "plVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar4 = *plVar5;" (assignment_expression "*plVar4 = *plVar5" (pointer_expression "*plVar4" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "plVar4[1] = plVar4[-2];" (assignment_expression "plVar4[1] = plVar4[-2]" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (subscript_expression "plVar4[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar1 < plVar4[-6])" ( (binary_expression "lVar1 < plVar4[-6]" identifier < (subscript_expression "plVar4[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar5 = lVar1;" (assignment_expression "*plVar5 = lVar1" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar4[-2] = lVar2;" (assignment_expression "plVar4[-2] = lVar2" (subscript_expression "plVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar4[-1] = lVar3;" (assignment_expression "plVar4[-1] = lVar3" (subscript_expression "plVar4[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" else (compound_statement "{\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" { (expression_statement "*plVar6 = lVar1;" (assignment_expression "*plVar6 = lVar1" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar2;" (assignment_expression "plVar6[1] = lVar2" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar3;" (assignment_expression "plVar6[2] = lVar3" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (if_statement "if (__last == plVar6) {\n        return;\n      }" if (parenthesized_expression "(__last == plVar6)" ( (binary_expression "__last == plVar6" identifier == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if (__first != plVar6) {\n      memmove(__first + 3,__first,(long)plVar6 - (long)__first);\n    }" if (parenthesized_expression "(__first != plVar6)" ( (binary_expression "__first != plVar6" identifier != identifier) )) (compound_statement "{\n      memmove(__first + 3,__first,(long)plVar6 - (long)__first);\n    }" { (expression_statement "memmove(__first + 3,__first,(long)plVar6 - (long)__first);" (call_expression "memmove(__first + 3,__first,(long)plVar6 - (long)__first)" identifier (argument_list "(__first + 3,__first,(long)plVar6 - (long)__first)" ( (binary_expression "__first + 3" identifier + number_literal) , identifier , (binary_expression "(long)plVar6 - (long)__first" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "*__first = lVar1;" (assignment_expression "*__first = lVar1" (pointer_expression "*__first" * identifier) = identifier) ;) (expression_statement "__first[1] = lVar2;" (assignment_expression "__first[1] = lVar2" (subscript_expression "__first[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__first[2] = lVar3;" (assignment_expression "__first[2] = lVar3" (subscript_expression "__first[2]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "void FUN_00258210(long *param_1,long *param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}\n\n" (function_definition "void FUN_00258210(long *param_1,long *param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00258210(long *param_1,long *param_2)" identifier (parameter_list "(long *param_1,long *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (if_statement "if (param_2 == param_1) {\n    return;\n  }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar6 = param_1 + 3;" (assignment_expression "plVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );" do (compound_statement "{\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  }" { (if_statement "if (plVar6 == param_2) {\n      return;\n    }" if (parenthesized_expression "(plVar6 == param_2)" ( (binary_expression "plVar6 == param_2" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (while_statement "while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" { (expression_statement "lVar1 = *plVar6;" (assignment_expression "lVar1 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar2 = plVar6[1];" (assignment_expression "lVar2 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "lVar3 = plVar6[2];" (assignment_expression "lVar3 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar1 < *param_1) break;" if (parenthesized_expression "(lVar1 < *param_1)" ( (binary_expression "lVar1 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (if_statement "if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" if (parenthesized_expression "(lVar1 < plVar6[-3])" ( (binary_expression "lVar1 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }" { (do_statement "do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);" do (compound_statement "{\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        }" { (expression_statement "plVar4 = plVar5;" (assignment_expression "plVar4 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = plVar4 + -3;" (assignment_expression "plVar5 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) (expression_statement "plVar4[2] = plVar4[-1];" (assignment_expression "plVar4[2] = plVar4[-1]" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (subscript_expression "plVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar4 = *plVar5;" (assignment_expression "*plVar4 = *plVar5" (pointer_expression "*plVar4" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "plVar4[1] = plVar4[-2];" (assignment_expression "plVar4[1] = plVar4[-2]" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (subscript_expression "plVar4[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar1 < plVar4[-6])" ( (binary_expression "lVar1 < plVar4[-6]" identifier < (subscript_expression "plVar4[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar5 = lVar1;" (assignment_expression "*plVar5 = lVar1" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar4[-2] = lVar2;" (assignment_expression "plVar4[-2] = lVar2" (subscript_expression "plVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar4[-1] = lVar3;" (assignment_expression "plVar4[-1] = lVar3" (subscript_expression "plVar4[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" else (compound_statement "{\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" { (expression_statement "*plVar6 = lVar1;" (assignment_expression "*plVar6 = lVar1" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar2;" (assignment_expression "plVar6[1] = lVar2" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar3;" (assignment_expression "plVar6[2] = lVar3" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (if_statement "if (param_2 == plVar6) {\n        return;\n      }" if (parenthesized_expression "(param_2 == plVar6)" ( (binary_expression "param_2 == plVar6" identifier == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (if_statement "if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" if (parenthesized_expression "(param_1 != plVar6)" ( (binary_expression "param_1 != plVar6" identifier != identifier) )) (compound_statement "{\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" { (expression_statement "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);" (call_expression "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" identifier (argument_list "(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" ( (binary_expression "param_1 + 3" identifier + number_literal) , identifier , (binary_expression "(long)plVar6 - (long)param_1" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ;) })) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "*param_1 = lVar1;" (assignment_expression "*param_1 = lVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = lVar2;" (assignment_expression "param_1[1] = lVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = lVar3;" (assignment_expression "param_1[2] = lVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00258210(long *param_1,long *param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00258210(long *param_1,long *param_2)" (identifier "FUN_00258210") (parameter_list "(long *param_1,long *param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long *plVar6;\n  \n  if (param_2 == param_1) {\n    return;\n  }\n  plVar6 = param_1 + 3;\n  do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (if_statement "if (param_2 == param_1) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "plVar6 = param_1 + 3;" (assignment_expression "plVar6 = param_1 + 3" (identifier "plVar6") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  } while( true );" (do "do") (compound_statement "{\n    if (plVar6 == param_2) {\n      return;\n    }\n    while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }\n    if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }\n    plVar6 = plVar6 + 3;\n    *param_1 = lVar1;\n    param_1[1] = lVar2;\n    param_1[2] = lVar3;\n  }" ({ "{") (if_statement "if (plVar6 == param_2) {\n      return;\n    }" (if "if") (parenthesized_expression "(plVar6 == param_2)" (( "(") (binary_expression "plVar6 == param_2" (identifier "plVar6") (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (while_statement "while( true ) {\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      lVar1 = *plVar6;\n      lVar2 = plVar6[1];\n      lVar3 = plVar6[2];\n      if (lVar1 < *param_1) break;\n      plVar5 = plVar6;\n      if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }\n      plVar6 = plVar6 + 3;\n      if (param_2 == plVar6) {\n        return;\n      }\n    }" ({ "{") (expression_statement "lVar1 = *plVar6;" (assignment_expression "lVar1 = *plVar6" (identifier "lVar1") (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "lVar2 = plVar6[1];" (assignment_expression "lVar2 = plVar6[1]" (identifier "lVar2") (= "=") (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar3 = plVar6[2];" (assignment_expression "lVar3 = plVar6[2]" (identifier "lVar3") (= "=") (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (lVar1 < *param_1) break;" (if "if") (parenthesized_expression "(lVar1 < *param_1)" (( "(") (binary_expression "lVar1 < *param_1" (identifier "lVar1") (< "<") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" (identifier "plVar5") (= "=") (identifier "plVar6")) (; ";")) (if_statement "if (lVar1 < plVar6[-3]) {\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }\n      else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" (if "if") (parenthesized_expression "(lVar1 < plVar6[-3])" (( "(") (binary_expression "lVar1 < plVar6[-3]" (identifier "lVar1") (< "<") (subscript_expression "plVar6[-3]" (identifier "plVar6") ([ "[") (number_literal "-3") (] "]"))) () ")")) (compound_statement "{\n        do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);\n        *plVar5 = lVar1;\n        plVar4[-2] = lVar2;\n        plVar4[-1] = lVar3;\n      }" ({ "{") (do_statement "do {\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        } while (lVar1 < plVar4[-6]);" (do "do") (compound_statement "{\n          plVar4 = plVar5;\n          plVar5 = plVar4 + -3;\n          plVar4[2] = plVar4[-1];\n          *plVar4 = *plVar5;\n          plVar4[1] = plVar4[-2];\n        }" ({ "{") (expression_statement "plVar4 = plVar5;" (assignment_expression "plVar4 = plVar5" (identifier "plVar4") (= "=") (identifier "plVar5")) (; ";")) (expression_statement "plVar5 = plVar4 + -3;" (assignment_expression "plVar5 = plVar4 + -3" (identifier "plVar5") (= "=") (binary_expression "plVar4 + -3" (identifier "plVar4") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "plVar4[2] = plVar4[-1];" (assignment_expression "plVar4[2] = plVar4[-1]" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "plVar4[-1]" (identifier "plVar4") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*plVar4 = *plVar5;" (assignment_expression "*plVar4 = *plVar5" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (; ";")) (expression_statement "plVar4[1] = plVar4[-2];" (assignment_expression "plVar4[1] = plVar4[-2]" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "plVar4[-2]" (identifier "plVar4") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar1 < plVar4[-6])" (( "(") (binary_expression "lVar1 < plVar4[-6]" (identifier "lVar1") (< "<") (subscript_expression "plVar4[-6]" (identifier "plVar4") ([ "[") (number_literal "-6") (] "]"))) () ")")) (; ";")) (expression_statement "*plVar5 = lVar1;" (assignment_expression "*plVar5 = lVar1" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "plVar4[-2] = lVar2;" (assignment_expression "plVar4[-2] = lVar2" (subscript_expression "plVar4[-2]" (identifier "plVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "plVar4[-1] = lVar3;" (assignment_expression "plVar4[-1] = lVar3" (subscript_expression "plVar4[-1]" (identifier "plVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (} "}")) (else_clause "else {\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" (else "else") (compound_statement "{\n        *plVar6 = lVar1;\n        plVar6[1] = lVar2;\n        plVar6[2] = lVar3;\n      }" ({ "{") (expression_statement "*plVar6 = lVar1;" (assignment_expression "*plVar6 = lVar1" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "plVar6[1] = lVar2;" (assignment_expression "plVar6[1] = lVar2" (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "plVar6[2] = lVar3;" (assignment_expression "plVar6[2] = lVar3" (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (} "}")))) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" (identifier "plVar6") (= "=") (binary_expression "plVar6 + 3" (identifier "plVar6") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (param_2 == plVar6) {\n        return;\n      }" (if "if") (parenthesized_expression "(param_2 == plVar6)" (( "(") (binary_expression "param_2 == plVar6" (identifier "param_2") (== "==") (identifier "plVar6")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_1 != plVar6) {\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" (if "if") (parenthesized_expression "(param_1 != plVar6)" (( "(") (binary_expression "param_1 != plVar6" (identifier "param_1") (!= "!=") (identifier "plVar6")) () ")")) (compound_statement "{\n      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);\n    }" ({ "{") (expression_statement "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);" (call_expression "memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" (identifier "memmove") (argument_list "(param_1 + 3,param_1,(long)plVar6 - (long)param_1)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) (, ",") (identifier "param_1") (, ",") (binary_expression "(long)plVar6 - (long)param_1" (cast_expression "(long)plVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar6")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar6 = plVar6 + 3;" (assignment_expression "plVar6 = plVar6 + 3" (identifier "plVar6") (= "=") (binary_expression "plVar6 + 3" (identifier "plVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*param_1 = lVar1;" (assignment_expression "*param_1 = lVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "param_1[1] = lVar2;" (assignment_expression "param_1[1] = lVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "param_1[2] = lVar3;" (assignment_expression "param_1[2] = lVar3" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,
   std::vector<gold::Object_merge_map::Input_merge_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare> > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
               (long *var_2,long *var_1)

{
  long var_4;
  long lVar2;
  long lVar3;
  long *var_5;
  long *plVar5;
  long *var_3;
  
  if (var_1 == var_2) {
    return;
  }
  var_3 = var_2 + 3;
  do {
    if (var_3 == var_1) {
      return;
    }
    while( true ) {
      var_4 = *var_3;
      lVar2 = var_3[1];
      lVar3 = var_3[2];
      if (var_4 < *var_2) break;
      plVar5 = var_3;
      if (var_4 < var_3[-3]) {
        do {
          var_5 = plVar5;
          plVar5 = var_5 + -3;
          var_5[2] = var_5[-1];
          *var_5 = *plVar5;
          var_5[1] = var_5[-2];
        } while (var_4 < var_5[-6]);
        *plVar5 = var_4;
        var_5[-2] = lVar2;
        var_5[-1] = lVar3;
      }
      else {
        *var_3 = var_4;
        var_3[1] = lVar2;
        var_3[2] = lVar3;
      }
      var_3 = var_3 + 3;
      if (var_1 == var_3) {
        return;
      }
    }
    if (var_2 != var_3) {
      var_6(var_2 + 3,var_2,(long)var_3 - (long)var_2);
    }
    var_3 = var_3 + 3;
    *var_2 = var_4;
    var_2[1] = lVar2;
    var_2[2] = lVar3;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) condition: (parenthesized_expression (true))))))

void MASKED(long *param_1,long *param_2)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long *plVar6;
  
  if (param_2 == param_1) {
    return;
  }
  plVar6 = param_1 + 3;
  do {
    if (plVar6 == param_2) {
      return;
    }
    while( true ) {
      lVar1 = *plVar6;
      lVar2 = plVar6[1];
      lVar3 = plVar6[2];
      if (lVar1 < *param_1) break;
      plVar5 = plVar6;
      if (lVar1 < plVar6[-3]) {
        do {
          plVar4 = plVar5;
          plVar5 = plVar4 + -3;
          plVar4[2] = plVar4[-1];
          *plVar4 = *plVar5;
          plVar4[1] = plVar4[-2];
        } while (lVar1 < plVar4[-6]);
        *plVar5 = lVar1;
        plVar4[-2] = lVar2;
        plVar4[-1] = lVar3;
      }
      else {
        *plVar6 = lVar1;
        plVar6[1] = lVar2;
        plVar6[2] = lVar3;
      }
      plVar6 = plVar6 + 3;
      if (param_2 == plVar6) {
        return;
      }
    }
    if (param_1 != plVar6) {
      memmove(param_1 + 3,param_1,(long)plVar6 - (long)param_1);
    }
    plVar6 = plVar6 + 3;
    *param_1 = lVar1;
    param_1[1] = lVar2;
    param_1[2] = lVar3;
  } while( true );
}

