
/* WARNING: Unknown calling convention */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,
   std::vector<gold::File_read::Read_multiple_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare> > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,_std::vector<gold::File_read::Read_multiple_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare>_>
               (long *__first,long *__last)

{
  long *plVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long *plVar5;
  long *plVar6;
  long lVar7;
  
  if ((__last != __first) && (plVar6 = __first + 3, plVar6 != __last)) {
    do {
      lVar2 = *plVar6;
      lVar3 = plVar6[1];
      plVar1 = plVar6 + 3;
      lVar4 = plVar6[2];
      if (lVar2 < *__first) {
        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;
        plVar5 = plVar1;
        if (0 < (long)plVar6 - (long)__first) {
          do {
            plVar5[-3] = plVar5[-6];
            plVar5[-2] = plVar5[-5];
            plVar5[-1] = plVar5[-4];
            lVar7 = lVar7 + -1;
            plVar5 = plVar5 + -3;
          } while (lVar7 != 0);
        }
        *__first = lVar2;
        __first[1] = lVar3;
        __first[2] = lVar4;
      }
      else if (lVar2 < plVar6[-3]) {
        do {
          plVar5 = plVar6;
          plVar6 = plVar5 + -3;
          plVar5[2] = plVar5[-1];
          *plVar5 = *plVar6;
          plVar5[1] = plVar5[-2];
        } while (lVar2 < plVar5[-6]);
        *plVar6 = lVar2;
        plVar5[-2] = lVar3;
        plVar5[-1] = lVar4;
      }
      else {
        *plVar6 = lVar2;
        plVar6[1] = lVar3;
        plVar6[2] = lVar4;
      }
      plVar6 = plVar1;
    } while (__last != plVar1);
    return;
  }
  return;
}



void FUN_0024af10(long *param_1,long *param_2)

{
  long *plVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long *plVar5;
  long *plVar6;
  long lVar7;
  
  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {
    do {
      lVar2 = *plVar6;
      lVar3 = plVar6[1];
      plVar1 = plVar6 + 3;
      lVar4 = plVar6[2];
      if (lVar2 < *param_1) {
        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;
        plVar5 = plVar1;
        if (0 < (long)plVar6 - (long)param_1) {
          do {
            plVar5[-3] = plVar5[-6];
            plVar5[-2] = plVar5[-5];
            plVar5[-1] = plVar5[-4];
            lVar7 = lVar7 + -1;
            plVar5 = plVar5 + -3;
          } while (lVar7 != 0);
        }
        *param_1 = lVar2;
        param_1[1] = lVar3;
        param_1[2] = lVar4;
      }
      else if (lVar2 < plVar6[-3]) {
        do {
          plVar5 = plVar6;
          plVar6 = plVar5 + -3;
          plVar5[2] = plVar5[-1];
          *plVar5 = *plVar6;
          plVar5[1] = plVar5[-2];
        } while (lVar2 < plVar5[-6]);
        *plVar6 = lVar2;
        plVar5[-2] = lVar3;
        plVar5[-1] = lVar4;
      }
      else {
        *plVar6 = lVar2;
        plVar6[1] = lVar3;
        plVar6[2] = lVar4;
      }
      plVar6 = plVar1;
    } while (param_2 != plVar1);
    return;
  }
  return;
}


CMP RSI,RDI
JZ 0x0024aff0
LEA RDX,[RDI + 0x18]
CMP RDX,RSI
JZ 0x0024aff0
PUSH RBX
MOV RBX,-0x5555555555555555
NOP dword ptr [RAX]
MOV R8,qword ptr [RDX]
MOV R11,qword ptr [RDX + 0x8]
LEA R9,[RDX + 0x18]
MOV R10,qword ptr [RDX + 0x10]
CMP R8,qword ptr [RDI]
JGE 0x0024afa0
MOV RCX,RDX
MOV RAX,R9
SUB RCX,RDI
MOV RDX,RCX
SAR RDX,0x3
IMUL RDX,RBX
TEST RCX,RCX
JLE 0x0024af82
NOP dword ptr [RAX]
SUB RAX,0x18
MOVDQU XMM0,xmmword ptr [RAX + -0x18]
MOV RCX,qword ptr [RAX + -0x8]
MOVUPS xmmword ptr [RAX],XMM0
MOV qword ptr [RAX + 0x10],RCX
SUB RDX,0x1
JNZ 0x0024af68
MOV qword ptr [RDI],R8
MOV qword ptr [RDI + 0x8],R11
MOV qword ptr [RDI + 0x10],R10
MOV RDX,R9
CMP RSI,R9
JNZ 0x0024af38
POP RBX
RET
LEA RAX,[RDX + -0x18]
CMP R8,qword ptr [R9 + -0x30]
JL 0x0024afb3
JMP 0x0024afe0
MOV RAX,RDX
MOV RDX,qword ptr [RAX + 0x10]
MOVDQU XMM1,xmmword ptr [RAX]
MOV qword ptr [RAX + 0x28],RDX
LEA RDX,[RAX + -0x18]
MOVUPS xmmword ptr [RAX + 0x18],XMM1
CMP R8,qword ptr [RAX + -0x18]
JL 0x0024afb0
MOV qword ptr [RAX],R8
MOV qword ptr [RAX + 0x8],R11
MOV qword ptr [RAX + 0x10],R10
JMP 0x0024af8d
MOV RAX,RDX
MOV qword ptr [RAX],R8
MOV qword ptr [RAX + 0x8],R11
MOV qword ptr [RAX + 0x10],R10
JMP 0x0024af8d
RET
(translation_unit "void FUN_0024af10(long *param_1,long *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0024af10(long *param_1,long *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0024af10(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 *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) 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) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" if (parenthesized_expression "((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2))" ( (binary_expression "(param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)" (parenthesized_expression "(param_2 != param_1)" ( (binary_expression "param_2 != param_1" identifier != identifier) )) && (parenthesized_expression "(plVar6 = param_1 + 3, plVar6 != param_2)" ( (comma_expression "plVar6 = param_1 + 3, plVar6 != param_2" (assignment_expression "plVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) , (binary_expression "plVar6 != param_2" identifier != identifier)) ))) )) (compound_statement "{\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" { (do_statement "do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);" do (compound_statement "{\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    }" { (expression_statement "lVar2 = *plVar6;" (assignment_expression "lVar2 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar3 = plVar6[1];" (assignment_expression "lVar3 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar6 + 3;" (assignment_expression "plVar1 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "lVar4 = plVar6[2];" (assignment_expression "lVar4 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < *param_1)" ( (binary_expression "lVar2 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }" { (expression_statement "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;" (assignment_expression "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar6 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar6 - (long)param_1 >> 3" (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)) >> number_literal) )) * number_literal)) ;) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" identifier = identifier) ;) (if_statement "if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" if (parenthesized_expression "(0 < (long)plVar6 - (long)param_1)" ( (binary_expression "0 < (long)plVar6 - (long)param_1" number_literal < (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))) )) (compound_statement "{\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" { (do_statement "do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);" do (compound_statement "{\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          }" { (expression_statement "plVar5[-3] = plVar5[-6];" (assignment_expression "plVar5[-3] = plVar5[-6]" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (subscript_expression "plVar5[-6]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-2] = plVar5[-5];" (assignment_expression "plVar5[-2] = plVar5[-5]" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-5]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-1] = plVar5[-4];" (assignment_expression "plVar5[-1] = plVar5[-4]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-4]" identifier [ number_literal ])) ;) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = lVar2;" (assignment_expression "*param_1 = lVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = lVar3;" (assignment_expression "param_1[1] = lVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = lVar4;" (assignment_expression "param_1[2] = lVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (if_statement "if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < plVar6[-3])" ( (binary_expression "lVar2 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }" { (do_statement "do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);" do (compound_statement "{\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        }" { (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (expression_statement "plVar6 = plVar5 + -3;" (assignment_expression "plVar6 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) (expression_statement "plVar5[2] = plVar5[-1];" (assignment_expression "plVar5[2] = plVar5[-1]" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = *plVar6;" (assignment_expression "*plVar5 = *plVar6" (pointer_expression "*plVar5" * identifier) = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "plVar5[1] = plVar5[-2];" (assignment_expression "plVar5[1] = plVar5[-2]" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar2 < plVar5[-6])" ( (binary_expression "lVar2 < plVar5[-6]" identifier < (subscript_expression "plVar5[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar5[-2] = lVar3;" (assignment_expression "plVar5[-2] = lVar3" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = lVar4;" (assignment_expression "plVar5[-1] = lVar4" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (compound_statement "{\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" { (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar3;" (assignment_expression "plVar6[1] = lVar3" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar4;" (assignment_expression "plVar6[2] = lVar4" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))))) (expression_statement "plVar6 = plVar1;" (assignment_expression "plVar6 = plVar1" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != plVar1)" ( (binary_expression "param_2 != plVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n/* DWARF original name:\n   __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,\n   std::vector<gold::File_read::Read_multiple_entry> >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare> > */\n\nvoid std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,_std::vector<gold::File_read::Read_multiple_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare>_>\n               (long *__first,long *__last)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((__last != __first) && (plVar6 = __first + 3, plVar6 != __last)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (__last != plVar1);\n    return;\n  }\n  return;\n}\n\n" comment comment (declaration "void std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,_std::vector<gold::File_read::Read_multiple_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare>_>\n               (long *__first,long *__last)\n\n{\n  long *plVar1;" primitive_type (ERROR "std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::File_read::Read_multiple_entry>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare>_>\n               (long *__first,long *__last)\n\n{\n  long" 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) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) 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) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((__last != __first) && (plVar6 = __first + 3, plVar6 != __last)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (__last != plVar1);\n    return;\n  }" if (parenthesized_expression "((__last != __first) && (plVar6 = __first + 3, plVar6 != __last))" ( (binary_expression "(__last != __first) && (plVar6 = __first + 3, plVar6 != __last)" (parenthesized_expression "(__last != __first)" ( (binary_expression "__last != __first" identifier != identifier) )) && (parenthesized_expression "(plVar6 = __first + 3, plVar6 != __last)" ( (comma_expression "plVar6 = __first + 3, plVar6 != __last" (assignment_expression "plVar6 = __first + 3" identifier = (binary_expression "__first + 3" identifier + number_literal)) , (binary_expression "plVar6 != __last" identifier != identifier)) ))) )) (compound_statement "{\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (__last != plVar1);\n    return;\n  }" { (do_statement "do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (__last != plVar1);" do (compound_statement "{\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    }" { (expression_statement "lVar2 = *plVar6;" (assignment_expression "lVar2 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar3 = plVar6[1];" (assignment_expression "lVar3 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar6 + 3;" (assignment_expression "plVar1 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "lVar4 = plVar6[2];" (assignment_expression "lVar4 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar2 < *__first) {\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < *__first)" ( (binary_expression "lVar2 < *__first" identifier < (pointer_expression "*__first" * identifier)) )) (compound_statement "{\n        lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *__first = lVar2;\n        __first[1] = lVar3;\n        __first[2] = lVar4;\n      }" { (expression_statement "lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555;" (assignment_expression "lVar7 = ((long)plVar6 - (long)__first >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)plVar6 - (long)__first >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar6 - (long)__first >> 3)" ( (binary_expression "(long)plVar6 - (long)__first >> 3" (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)) >> number_literal) )) * number_literal)) ;) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" identifier = identifier) ;) (if_statement "if (0 < (long)plVar6 - (long)__first) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" if (parenthesized_expression "(0 < (long)plVar6 - (long)__first)" ( (binary_expression "0 < (long)plVar6 - (long)__first" number_literal < (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))) )) (compound_statement "{\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" { (do_statement "do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);" do (compound_statement "{\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          }" { (expression_statement "plVar5[-3] = plVar5[-6];" (assignment_expression "plVar5[-3] = plVar5[-6]" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (subscript_expression "plVar5[-6]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-2] = plVar5[-5];" (assignment_expression "plVar5[-2] = plVar5[-5]" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-5]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-1] = plVar5[-4];" (assignment_expression "plVar5[-1] = plVar5[-4]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-4]" identifier [ number_literal ])) ;) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) ;) })) (expression_statement "*__first = lVar2;" (assignment_expression "*__first = lVar2" (pointer_expression "*__first" * identifier) = identifier) ;) (expression_statement "__first[1] = lVar3;" (assignment_expression "__first[1] = lVar3" (subscript_expression "__first[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__first[2] = lVar4;" (assignment_expression "__first[2] = lVar4" (subscript_expression "__first[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (if_statement "if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < plVar6[-3])" ( (binary_expression "lVar2 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }" { (do_statement "do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);" do (compound_statement "{\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        }" { (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (expression_statement "plVar6 = plVar5 + -3;" (assignment_expression "plVar6 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) (expression_statement "plVar5[2] = plVar5[-1];" (assignment_expression "plVar5[2] = plVar5[-1]" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = *plVar6;" (assignment_expression "*plVar5 = *plVar6" (pointer_expression "*plVar5" * identifier) = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "plVar5[1] = plVar5[-2];" (assignment_expression "plVar5[1] = plVar5[-2]" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar2 < plVar5[-6])" ( (binary_expression "lVar2 < plVar5[-6]" identifier < (subscript_expression "plVar5[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar5[-2] = lVar3;" (assignment_expression "plVar5[-2] = lVar3" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = lVar4;" (assignment_expression "plVar5[-1] = lVar4" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (compound_statement "{\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" { (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar3;" (assignment_expression "plVar6[1] = lVar3" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar4;" (assignment_expression "plVar6[2] = lVar4" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))))) (expression_statement "plVar6 = plVar1;" (assignment_expression "plVar6 = plVar1" identifier = identifier) ;) }) while (parenthesized_expression "(__last != plVar1)" ( (binary_expression "__last != plVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0024af10(long *param_1,long *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0024af10(long *param_1,long *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0024af10(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 *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) 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) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" if (parenthesized_expression "((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2))" ( (binary_expression "(param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)" (parenthesized_expression "(param_2 != param_1)" ( (binary_expression "param_2 != param_1" identifier != identifier) )) && (parenthesized_expression "(plVar6 = param_1 + 3, plVar6 != param_2)" ( (comma_expression "plVar6 = param_1 + 3, plVar6 != param_2" (assignment_expression "plVar6 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) , (binary_expression "plVar6 != param_2" identifier != identifier)) ))) )) (compound_statement "{\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" { (do_statement "do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);" do (compound_statement "{\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    }" { (expression_statement "lVar2 = *plVar6;" (assignment_expression "lVar2 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar3 = plVar6[1];" (assignment_expression "lVar3 = plVar6[1]" identifier = (subscript_expression "plVar6[1]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar6 + 3;" (assignment_expression "plVar1 = plVar6 + 3" identifier = (binary_expression "plVar6 + 3" identifier + number_literal)) ;) (expression_statement "lVar4 = plVar6[2];" (assignment_expression "lVar4 = plVar6[2]" identifier = (subscript_expression "plVar6[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < *param_1)" ( (binary_expression "lVar2 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }" { (expression_statement "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;" (assignment_expression "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar6 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar6 - (long)param_1 >> 3" (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)) >> number_literal) )) * number_literal)) ;) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" identifier = identifier) ;) (if_statement "if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" if (parenthesized_expression "(0 < (long)plVar6 - (long)param_1)" ( (binary_expression "0 < (long)plVar6 - (long)param_1" number_literal < (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))) )) (compound_statement "{\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" { (do_statement "do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);" do (compound_statement "{\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          }" { (expression_statement "plVar5[-3] = plVar5[-6];" (assignment_expression "plVar5[-3] = plVar5[-6]" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (subscript_expression "plVar5[-6]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-2] = plVar5[-5];" (assignment_expression "plVar5[-2] = plVar5[-5]" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-5]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-1] = plVar5[-4];" (assignment_expression "plVar5[-1] = plVar5[-4]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-4]" identifier [ number_literal ])) ;) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = lVar2;" (assignment_expression "*param_1 = lVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = lVar3;" (assignment_expression "param_1[1] = lVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = lVar4;" (assignment_expression "param_1[2] = lVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (if_statement "if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" if (parenthesized_expression "(lVar2 < plVar6[-3])" ( (binary_expression "lVar2 < plVar6[-3]" identifier < (subscript_expression "plVar6[-3]" identifier [ number_literal ])) )) (compound_statement "{\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }" { (do_statement "do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);" do (compound_statement "{\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        }" { (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" identifier = identifier) ;) (expression_statement "plVar6 = plVar5 + -3;" (assignment_expression "plVar6 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) (expression_statement "plVar5[2] = plVar5[-1];" (assignment_expression "plVar5[2] = plVar5[-1]" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = *plVar6;" (assignment_expression "*plVar5 = *plVar6" (pointer_expression "*plVar5" * identifier) = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "plVar5[1] = plVar5[-2];" (assignment_expression "plVar5[1] = plVar5[-2]" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(lVar2 < plVar5[-6])" ( (binary_expression "lVar2 < plVar5[-6]" identifier < (subscript_expression "plVar5[-6]" identifier [ number_literal ])) )) ;) (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar5[-2] = lVar3;" (assignment_expression "plVar5[-2] = lVar3" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = lVar4;" (assignment_expression "plVar5[-1] = lVar4" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" else (compound_statement "{\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" { (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar3;" (assignment_expression "plVar6[1] = lVar3" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar6[2] = lVar4;" (assignment_expression "plVar6[2] = lVar4" (subscript_expression "plVar6[2]" identifier [ number_literal ]) = identifier) ;) }))))) (expression_statement "plVar6 = plVar1;" (assignment_expression "plVar6 = plVar1" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != plVar1)" ( (binary_expression "param_2 != plVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(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) (pointer_declarator * IDENT) ;) (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) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (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) ;) }) (else_clause else (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 = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_0024af10(long *param_1,long *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0024af10(long *param_1,long *param_2)" (identifier "FUN_0024af10") (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 *plVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long *plVar5;\n  long *plVar6;\n  long lVar7;\n  \n  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (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")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (if_statement "if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" (if "if") (parenthesized_expression "((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2))" (( "(") (binary_expression "(param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)" (parenthesized_expression "(param_2 != param_1)" (( "(") (binary_expression "param_2 != param_1" (identifier "param_2") (!= "!=") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(plVar6 = param_1 + 3, plVar6 != param_2)" (( "(") (comma_expression "plVar6 = param_1 + 3, plVar6 != param_2" (assignment_expression "plVar6 = param_1 + 3" (identifier "plVar6") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (, ",") (binary_expression "plVar6 != param_2" (identifier "plVar6") (!= "!=") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n    do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);\n    return;\n  }" ({ "{") (do_statement "do {\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    } while (param_2 != plVar1);" (do "do") (compound_statement "{\n      lVar2 = *plVar6;\n      lVar3 = plVar6[1];\n      plVar1 = plVar6 + 3;\n      lVar4 = plVar6[2];\n      if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }\n      plVar6 = plVar1;\n    }" ({ "{") (expression_statement "lVar2 = *plVar6;" (assignment_expression "lVar2 = *plVar6" (identifier "lVar2") (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "lVar3 = plVar6[1];" (assignment_expression "lVar3 = plVar6[1]" (identifier "lVar3") (= "=") (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar1 = plVar6 + 3;" (assignment_expression "plVar1 = plVar6 + 3" (identifier "plVar1") (= "=") (binary_expression "plVar6 + 3" (identifier "plVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "lVar4 = plVar6[2];" (assignment_expression "lVar4 = plVar6[2]" (identifier "lVar4") (= "=") (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (lVar2 < *param_1) {\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }\n      else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" (if "if") (parenthesized_expression "(lVar2 < *param_1)" (( "(") (binary_expression "lVar2 < *param_1" (identifier "lVar2") (< "<") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;\n        plVar5 = plVar1;\n        if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }\n        *param_1 = lVar2;\n        param_1[1] = lVar3;\n        param_1[2] = lVar4;\n      }" ({ "{") (expression_statement "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;" (assignment_expression "lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" (identifier "lVar7") (= "=") (binary_expression "((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar6 - (long)param_1 >> 3)" (( "(") (binary_expression "(long)plVar6 - (long)param_1 >> 3" (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"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555"))) (; ";")) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" (identifier "plVar5") (= "=") (identifier "plVar1")) (; ";")) (if_statement "if (0 < (long)plVar6 - (long)param_1) {\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" (if "if") (parenthesized_expression "(0 < (long)plVar6 - (long)param_1)" (( "(") (binary_expression "0 < (long)plVar6 - (long)param_1" (number_literal "0") (< "<") (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")))) () ")")) (compound_statement "{\n          do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);\n        }" ({ "{") (do_statement "do {\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          } while (lVar7 != 0);" (do "do") (compound_statement "{\n            plVar5[-3] = plVar5[-6];\n            plVar5[-2] = plVar5[-5];\n            plVar5[-1] = plVar5[-4];\n            lVar7 = lVar7 + -1;\n            plVar5 = plVar5 + -3;\n          }" ({ "{") (expression_statement "plVar5[-3] = plVar5[-6];" (assignment_expression "plVar5[-3] = plVar5[-6]" (subscript_expression "plVar5[-3]" (identifier "plVar5") ([ "[") (number_literal "-3") (] "]")) (= "=") (subscript_expression "plVar5[-6]" (identifier "plVar5") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "plVar5[-2] = plVar5[-5];" (assignment_expression "plVar5[-2] = plVar5[-5]" (subscript_expression "plVar5[-2]" (identifier "plVar5") ([ "[") (number_literal "-2") (] "]")) (= "=") (subscript_expression "plVar5[-5]" (identifier "plVar5") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "plVar5[-1] = plVar5[-4];" (assignment_expression "plVar5[-1] = plVar5[-4]" (subscript_expression "plVar5[-1]" (identifier "plVar5") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "plVar5[-4]" (identifier "plVar5") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" (identifier "plVar5") (= "=") (binary_expression "plVar5 + -3" (identifier "plVar5") (+ "+") (number_literal "-3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar7 != 0)" (( "(") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = lVar2;" (assignment_expression "*param_1 = lVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "param_1[1] = lVar3;" (assignment_expression "param_1[1] = lVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "param_1[2] = lVar4;" (assignment_expression "param_1[2] = lVar4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (} "}")) (else_clause "else if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" (else "else") (if_statement "if (lVar2 < plVar6[-3]) {\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }\n      else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" (if "if") (parenthesized_expression "(lVar2 < plVar6[-3])" (( "(") (binary_expression "lVar2 < plVar6[-3]" (identifier "lVar2") (< "<") (subscript_expression "plVar6[-3]" (identifier "plVar6") ([ "[") (number_literal "-3") (] "]"))) () ")")) (compound_statement "{\n        do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);\n        *plVar6 = lVar2;\n        plVar5[-2] = lVar3;\n        plVar5[-1] = lVar4;\n      }" ({ "{") (do_statement "do {\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        } while (lVar2 < plVar5[-6]);" (do "do") (compound_statement "{\n          plVar5 = plVar6;\n          plVar6 = plVar5 + -3;\n          plVar5[2] = plVar5[-1];\n          *plVar5 = *plVar6;\n          plVar5[1] = plVar5[-2];\n        }" ({ "{") (expression_statement "plVar5 = plVar6;" (assignment_expression "plVar5 = plVar6" (identifier "plVar5") (= "=") (identifier "plVar6")) (; ";")) (expression_statement "plVar6 = plVar5 + -3;" (assignment_expression "plVar6 = plVar5 + -3" (identifier "plVar6") (= "=") (binary_expression "plVar5 + -3" (identifier "plVar5") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "plVar5[2] = plVar5[-1];" (assignment_expression "plVar5[2] = plVar5[-1]" (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "plVar5[-1]" (identifier "plVar5") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*plVar5 = *plVar6;" (assignment_expression "*plVar5 = *plVar6" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "plVar5[1] = plVar5[-2];" (assignment_expression "plVar5[1] = plVar5[-2]" (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "plVar5[-2]" (identifier "plVar5") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar2 < plVar5[-6])" (( "(") (binary_expression "lVar2 < plVar5[-6]" (identifier "lVar2") (< "<") (subscript_expression "plVar5[-6]" (identifier "plVar5") ([ "[") (number_literal "-6") (] "]"))) () ")")) (; ";")) (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "plVar5[-2] = lVar3;" (assignment_expression "plVar5[-2] = lVar3" (subscript_expression "plVar5[-2]" (identifier "plVar5") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "plVar5[-1] = lVar4;" (assignment_expression "plVar5[-1] = lVar4" (subscript_expression "plVar5[-1]" (identifier "plVar5") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (} "}")) (else_clause "else {\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" (else "else") (compound_statement "{\n        *plVar6 = lVar2;\n        plVar6[1] = lVar3;\n        plVar6[2] = lVar4;\n      }" ({ "{") (expression_statement "*plVar6 = lVar2;" (assignment_expression "*plVar6 = lVar2" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "plVar6[1] = lVar3;" (assignment_expression "plVar6[1] = lVar3" (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "plVar6[2] = lVar4;" (assignment_expression "plVar6[2] = lVar4" (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (} "}")))))) (expression_statement "plVar6 = plVar1;" (assignment_expression "plVar6 = plVar1" (identifier "plVar6") (= "=") (identifier "plVar1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != plVar1)" (( "(") (binary_expression "param_2 != plVar1" (identifier "param_2") (!= "!=") (identifier "plVar1")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */
/* DWARF original name:
   __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,
   std::vector<gold::File_read::Read_multiple_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare> > */

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::File_read::Read_multiple_entry*,_std::vector<gold::File_read::Read_multiple_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Read_multiple_compare>_>
               (long *var_2,long *var_1)

{
  long *var_7;
  long var_4;
  long lVar3;
  long lVar4;
  long *var_6;
  long *var_3;
  long var_5;
  
  if ((var_1 != var_2) && (var_3 = var_2 + 3, var_3 != var_1)) {
    do {
      var_4 = *var_3;
      lVar3 = var_3[1];
      var_7 = var_3 + 3;
      lVar4 = var_3[2];
      if (var_4 < *var_2) {
        var_5 = ((long)var_3 - (long)var_2 >> 3) * -0x5555555555555555;
        var_6 = var_7;
        if (0 < (long)var_3 - (long)var_2) {
          do {
            var_6[-3] = var_6[-6];
            var_6[-2] = var_6[-5];
            var_6[-1] = var_6[-4];
            var_5 = var_5 + -1;
            var_6 = var_6 + -3;
          } while (var_5 != 0);
        }
        *var_2 = var_4;
        var_2[1] = lVar3;
        var_2[2] = lVar4;
      }
      else if (var_4 < var_3[-3]) {
        do {
          var_6 = var_3;
          var_3 = var_6 + -3;
          var_6[2] = var_6[-1];
          *var_6 = *var_3;
          var_6[1] = var_6[-2];
        } while (var_4 < var_6[-6]);
        *var_3 = var_4;
        var_6[-2] = lVar3;
        var_6[-1] = lVar4;
      }
      else {
        *var_3 = var_4;
        var_3[1] = lVar3;
        var_3[2] = lVar4;
      }
      var_3 = var_7;
    } while (var_1 != var_7);
    return;
  }
  return;
}


(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: (pointer_declarator declarator: (identifier))) (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: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (do_statement 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: (binary_expression left: (identifier) right: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (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))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (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))))) consequence: (compound_statement (do_statement body: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (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)))) alternative: (else_clause (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: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (return_statement))) (return_statement))))

void MASKED(long *param_1,long *param_2)

{
  long *plVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long *plVar5;
  long *plVar6;
  long lVar7;
  
  if ((param_2 != param_1) && (plVar6 = param_1 + 3, plVar6 != param_2)) {
    do {
      lVar2 = *plVar6;
      lVar3 = plVar6[1];
      plVar1 = plVar6 + 3;
      lVar4 = plVar6[2];
      if (lVar2 < *param_1) {
        lVar7 = ((long)plVar6 - (long)param_1 >> 3) * -0x5555555555555555;
        plVar5 = plVar1;
        if (0 < (long)plVar6 - (long)param_1) {
          do {
            plVar5[-3] = plVar5[-6];
            plVar5[-2] = plVar5[-5];
            plVar5[-1] = plVar5[-4];
            lVar7 = lVar7 + -1;
            plVar5 = plVar5 + -3;
          } while (lVar7 != 0);
        }
        *param_1 = lVar2;
        param_1[1] = lVar3;
        param_1[2] = lVar4;
      }
      else if (lVar2 < plVar6[-3]) {
        do {
          plVar5 = plVar6;
          plVar6 = plVar5 + -3;
          plVar5[2] = plVar5[-1];
          *plVar5 = *plVar6;
          plVar5[1] = plVar5[-2];
        } while (lVar2 < plVar5[-6]);
        *plVar6 = lVar2;
        plVar5[-2] = lVar3;
        plVar5[-1] = lVar4;
      }
      else {
        *plVar6 = lVar2;
        plVar6[1] = lVar3;
        plVar6[2] = lVar4;
      }
      plVar6 = plVar1;
    } while (param_2 != plVar1);
    return;
  }
  return;
}

